원인
zbxe는 다국어를 지원하기 때문에 메뉴가 언어별로 생성되어 db에 저장되는데 동일한 메뉴명으로 지정하더라도 국가의 수 만큼 메뉴가 늘어나는 셈이다.
국가별로 메뉴명을 다르게 하였을 경우 언어에 따라서는 메뉴명이 길어지게 될 수도 있다.
메뉴 데이터가 길어서 생기는 현상이다.

증상
예를 들면 메뉴를 국가별로 다르게 하거나 길게 하고 저장하였을 경우 메뉴명이 나타나는 것이 아니고 일률적으로 아래와 비슷하게 보일 것이다.

a:7:{s:2:"ko";s:33:"질병/수술/처치/검사정보";s:2:"en";s:59:"Disease/operation/handling/prosecuting attorney information";s:5:"zh-CN";s:33:"疾病/手術/処置/検事情報";s:2:"jp";s:33:"疾病/手術/処置/検事情報";s:2:"es";s:10:"Enfermedad";s:2:"ru";s:22:"Заболевание";s:2:"fr";s:69:"L'information de mandataire de Disease/operation/handling/prosecuting";}

이 현상은 다른 국가의 언어를 입력하였다고 깨어지는 것이 아니다.
즉 메뉴명에 일본어, 중국어, 프랑스어, 에스파니어, 러시아어 등 어떤 언어를 입력하여도 상관없는 것이다.

해결 방법
mysql db에서 속성을 바꾸어 주어야 한다.
설치한 db를 살펴보아서 변경을 해주면 해결된다.
xe_menu_item 테이블을 살펴보고 수정해주어야 한다.

xe_menu_item테이블의 name필드 종류가 varchar(250)인지 알아본다.
name varchar(250) 으로 되어 있으면 name필드의 종류을 text로 바꾸어 주면 된다.
name text 로 설정이 되면 메뉴명이 길더라도 수용이 된다.  

필드를 변경하여도 db에 저장되는 데이터는 위의 예와 같이 이상한 숫자와 함께 저장되는 것이다.
db에서 메뉴명만 깔끔하게 변경이 되지 않는다고 당황할 필요가 없다.

이제 관리자에서 메뉴를 원하는 대로 수정하면 잘 바뀔 것이다. 
메뉴변경 후에는 캐시파일재생성 해주면 변경완료다.
현재평점 0 (평가자 수 : 0)
profile

여기에서 행복한 시간 되십시오.