웹마스터 팁
XE 1.5 를 1.7 로 업데이트한 경우, 카테고리 사용여부 설정 버그 수정법
2013.07.21 13:23
Board 모듈의 이슈에 등록할 글입니다. 반영될지, 언제 업데이트 될지 모르기에 적어둡니다.
출처 : http://sejin7940.co.kr/index.php?mid=xe_tips&document_srl=93116
----------------------------------------------
기존 XE 1.5 에서는 카테고리 사용여부 체크하던 항목이 (use_category)
XE 1.7 에서는 카테고리 숨김여부 (hide_category) 로 변경이 되어버렸는데 (이게 값이 완전히 반대이다)
우선, XE 1.5 까지 호환되는 스킨으로 제작할때는
스킨 내부에서, 새로 만들어진 $module_info->hide_category 가 아닌, $module_info->use_category 로 계속 사용하여야한다.
(흠.. 개인적으로는 이 값을 XE 1.7 에서 바꿔버린건 좋은 판단은 아니라고 생각되긴하는데... 바뀌어버렸으니 따라가야죠 ^^;;)
이를 보완하기 위해 board.view.php 파일의 init() 이 둘 사이의 호환값이 있긴한데..
이게 잘못 설정이 되어있다.
XE 1.5 기반에서 카테고리를 사용하다가 안 쓰려고, 카테고리 사용 안 함으로 체크 한 상태에서...
(그러나 추후 쓸 수도 있으니 카테고리는 안 지운 상태. 그래야 기존 입력한 글들에 카테고리 값이 그대로 유지되기에)
이를 그대로 XE 1.7 로 업데이트를 시키는 경우
modules/board/board.view.php 의 function init() 함수내에서
//If category are exsist, set value 'use_category' to 'Y'
if($this->module_info->hide_category != 'Y' && count($oDocumentModel->getCategoryList($this->module_info->module_srl))) 구문에서
당연히 $this->module_info->hide_category 값은 없고, count($oDocumentModel->getCategoryList($this->module_info->module_srl)) 값은 존재하기에..
$this->module_info->use_category = 'Y'; 즉, 카테고리가 사용하는 걸로 인식되어버리는 문제가 생긴다.
즉, 카테고리 사용하다가 사용 안 한 걸로 설정변경한 경우, XE 1.7 로 넘어오면서, 자동으로 카테고리를 노출시키는 걸로, 역으로 출력되는 버그가 발생한다.
수정방법은...
물론 모든 게시판 설정에서 '분류관리' 의 '분류 숨기기' 를 다 다시 지정하면 되나..
게시판 수가 많을 경우 이도 부담스러울 수 있으니..
modules/board/board.view.php 의 function init() 함수내에서
if($this->module_info->hide_category != 'Y' && count($oDocumentModel->getCategoryList($this->module_info->module_srl)))
$this->module_info->use_category = 'Y';
else
$this->module_info->use_category = 'N';
를 아래처럼 고치면 된다.
if($this->module_info->use_category && !$this->module_info->hide_category) {
if($this->module_info->use_category=='Y') $this->module_info->hide_category = 'N';
else $this->module_info->hide_category = 'Y';
}
else if($this->module_info->hide_category != 'Y' && count($oDocumentModel->getCategoryList($this->module_info->module_srl)))
$this->module_info->use_category = 'Y';
else
$this->module_info->use_category = 'N';