웹마스터 팁

아는지인분이 요청하셔서 공홈에 찾아보니 관련 문제를 겪으신분들이 꽤나 있는 것 같은데,

@배워서남준다 님께서 올리신 ModuleHandler.class.php 를 수정하는 방법을 보았습니다.

일단 적용은 되긴하나 이 방법은 코어를건드리는 부분이다보니.. 추천하고싶지 않습니다.

또 근본적인 해결책이 되지는 못하겠지요.

homepage 모듈(cafexe 의 모듈명)에서 트리거를 이용해 레이아웃을 적용시키는데, modulehandler.class.php 를 수정하게되면 그트리거를 다~ 동작시킨 뒤 레이아웃을 강제로 다시박아버리는 형태가 되어버려서 좀 찝찝한감이있지요.

그래서 레이아웃을 적용하는 함수를 수정합니다.

./modules/homepage/homepage.controller.php 500번줄 근처에서 triggerApplyLayout() 이란 함수를 수정해주시면됩니다.

$current_module_info = Context::get('current_module_info');
//여기서부터 추가합니다.
$args->layout_srl = $current_module_info->layout_srl;
$output = executeQuery('layout.getLayout', $args);
if(!$output->toBool()) return $output;
$layout_info = $output->data;

if(!$layout_info){
$args->site_srl = $site_module_info->site_srl;
$output = executeQuery('homepage.getHomepage', $args);
$layout_srl = $output->data->layout_srl;

if(!$layout_srl) return new Object();
$oModule->module_info->layout_srl = $layout_srl;
$current_module_info->layout_srl = $layout_srl;
}else{
$oModule->module_info->layout_srl = $current_module_info->layout_srl;
$current_module_info->layout_srl = $current_module_info->layout_srl;
}

설명을좀 드리자면...

기존 사이트정보에 등록된 layout 으로 강제 적용하던 방식을 아래와같이 수정하였습니다.

현재모듈에 등록된 레이아웃 정보를 먼저 읽어서 해당레이아웃이 실제 존재하는 레이아웃이면 그 레이아웃을 적용하고 존재하지않는경우 ("미사용"을 사용할 수 없다는 단점이 .. ㅡ; 필요해지면 방법을 찾아보겠습니다.)에만 기존방식으로 동작하게끔 수정한 방식입니다.

네. 그렇습니다.

 

이상 (__);