묻고답하기
하나의 게시판에 다수의 레이아웃 지정 방법
2012.04.11 11:46
오늘로써 약 일주일정도 그자리상태인데요. 질문을 3번하였으나
질문이 잘못되었는지 원하는답변이 안나오네요. 간단히 질문하겠습니다.
하나의 게시판에 다수의 레이아웃이나
하나의 게시판에 다수의 환경설정이 가능할까요?
부탁드리겠습니다.
댓글 2
-
sejin7940
2012.04.11 18:08
-
*별로*
2012.08.12 02:53
질문이 오래되어서 이미 해답을 구했으리라 생각합니다만, 같은 질문을 가진 분들을 위해 답변합니다.
쉰운 해답은:
1. board.view.php에 init() 함수 안에 $this->module_info->layout_srl 변수에 원하시는 layout_srl로 지정하면 됩니다.
/**
* 현재 사용자 레이아웃을 설정,
* default 레이아웃을 가져와서 사용자 레이아웃을 설정
**/
$logged_info = Context::get('logged_info');
// memberex.model에서 레이아웃 가져옴
$oMemberexModel = &getModel('memberex');
if ($logged_info) $layout_srl = $oMemberexModel->getLayoutByMemberSrl($logged_info->member_srl);
else $layout_srl = $oMemberexModel->getDefaultLayout();
if ($layout_srl) $this->module_info->layout_srl = $layout_srl;
좀 더 복잡한 해답은:
board.view.php 모듈 파일을 모듈 확장(module extension)으로 boardex.view.php를 생성 후에, boardex.view.php안에 있는 init() 함수에 위에 나와 있는 코드나 다른 원하는 방식으로 $this->module_info->layout_srl 에 layout_srl를 지정하면 됩니다.
이 방식은 코어가 module_info->layout_srl 유지하고 게시판 모듈이 자동 업글이 되더라도 동작합니다. 나중에 게시판 모듈이 다중 레이아웃 기능이 추가되면, boardex 모듈을 제거하시고 게시판 모듈의 다중 레이아웃 기능을 사용하시면 됩니다.
혹시나 해서, 제 boardex.view.php와 boradex.class.php 파일 첨부합니다. (debugPrint 문장들은 이해를 돕기 위해 넣었습니다.)
원칙적으로 XE에서는 게시판-레이아웃-메뉴 가 1:1 로 다 연결이 되어있어서
하나의 게시판을 여러 레이아웃에서 공유하는게 불가능합니다. (따라서 하나의 게시판을 여러 사이트에서 공유가 안 되죠)
물론 방법은 있습니다. 이걸 하려면 Core 의 일부도 수정해야하고
레이아웃 과 위젯들, 게시판들을 전부 그에 맞게 고쳐야하기에 일이 굉장히 많습니다 ^^;;
그냥 기본적으로는... 불가능하다고 알고 계시는게 편하실듯합니다.