애드온을 실행할 때 게시판 모듈에서만 실행시켜주고 싶습니다.

예를 들어 간단한 키스투엑스이님의 본문 내 광고 추가 애드온 소스 코드입니다.


<?php
if(!defined("__ZBXE__")) exit();
if($called_position == 'before_display_content' && Context::getResponseMethod() == 'HTML') {
    $output = str_replace("<!--BeforeDocument(", $addon_info->soo_top."<!--BeforeDocument(", $output);
    $output = str_replace("<!--AfterDocument(", $addon_info->soo_bottom."<!--AfterDocument(", $output);
}
?>


이 코드를 module 이름이 board인 경우에만 실행시키고 싶은데요.
예를 들어 이런 식으로 board인 모듈만 추출해서 args로 보낸 뒤에 output으로 넘길 수 없을까요.

물론 코드는 잘못되어서 동작이 안됩니다 ㅠ;;


<?php

if(!defined("__ZBXE__")) exit();

$args->module = 'board';

$module = $output->get('module_srl');

$output = $oModuleController->insertModule($args);


if($module=='board'){

  [원래 애드온 코드]

}


?>

  • profile
    if($this->module=='board'){

    이렇게 가능합니다. $called_position 에 따라 안되는 곳도 있습니다.

    안되면

    $oModuleModel = getModel('module');
    $module_info = $oModuleModel->getModuleInfoByMid(Context::get('mid'));

    if($module_info->module=='board'){

    이렇게 하면 됩니다.
  • profile profile

    $module_info = Context::get('module_info');
    if($module_info->module=='board'){..}
    이렇게 해도 되는군요. 감사합니다.

     

     

    $oModuleModel = getModel('module');
    $module_info = $oModuleModel->getModuleInfoByMid(Context::get('mid'));

     

     

    이것과

     

    $module_info = Context::get('module_info');

     

    이것의 차이점이 뭔가요?

  • profile profile
    $module_info = Context::get('module_info');
    이건 xe에서 현재 모듈을 검색하여 그 모듈정보를 set 한 것입니다.

    결론은 똑같습니다. 그거나 이거나...