OVERCODE

xe 메뉴 추가에 내가 만든 모듈 나오게 하기, xe 사이트메뉴에 module 추가 본문

프로그래밍/XE

xe 메뉴 추가에 내가 만든 모듈 나오게 하기, xe 사이트메뉴에 module 추가

오버코드 2016. 2. 28. 10:13

모듈을 만들고 사이트 메뉴 편집에서 모듈을 메뉴에 추가하려고 하면 모듈이 메뉴 추가 목록에 없을겁니다.

트리거에 추가된 모듈만 리스트에 불러오기 때문인데요.

메뉴 추가 목록에 모듈이 나오게 트리거에 추가하는 방법을 알아보겠습니다.



사이트 메뉴 편집 → 메뉴 추가에 내가 만든 모듈 나오게 하는 방법


사용자가 만든 모듈의 디렉토리로 이동하면 아마 위와 같은 파일들을 만드셨을겁니다.

여기서 수정할 파일은 모듈명.clsss.php모듈명.model.php 입니다.


모듈명.class.php 수정

function checkUpdate() {
    $oModuleModel = getModel('module');
    if(!$oModuleModel->getTrigger('menu.getModuleListInSitemap', '모듈명', 'model', 'triggerModuleListInSitemap', 'after')) return true;
    return false;
}
function moduleUpdate() {
    $oModuleModel = getModel('module');
    $oModuleController = getController('module');

    if(!$oModuleModel->getTrigger('menu.getModuleListInSitemap', '모듈명', 'model', 'triggerModuleListInSitemap', 'after'))
    {
        $oModuleController->insertTrigger('menu.getModuleListInSitemap', '모듈명', 'model', 'triggerModuleListInSitemap', 'after');
    }
    return new Object(0, 'success_updated');
}

checkUpdate() 와 moduleUpdate() 에 위와 같이 추가해줍니다.

checkUpdate() 에서 트리거가 있는지 체크를 하여 없다면 xe관리자에서 모듈을 업데이트 하겠냐는 창이 뜹니다.

거기서 업데이트를 하겠다고 누르면 moduleUpdate() 가 실행됩니다.

moduleUpdate() 에서 역시 트리거가 없으면 트리거를 추가하는 코드가 있네요.


모듈명.model.php 수정

function triggerModuleListInSitemap(&$obj){
    array_push($obj,'모듈명');
}

menu.getModuleListInSitemap 트리거가 호출되고 난후에 실행되는 함수에 array_push() 를 추가하는 부분입니다.

이제 수정할 부분은 마쳤습니다.


이제 XE Admin 으로 가면 모듈 업데이트가 떴을겁니다. 업데이트 해주면 Trigger 에 추가가 됩니다.



그러면 위와 같이 메뉴 추가에 내가 만든 모듈이 등록이 되어있을 겁니다.

저기에 나오는 모듈명과 Description 을 바꾸려면 info.xml 의 title 과 description 을 수정하시면 됩니다.


<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
    <title xml:lang="ko">Module</title>
    <description xml:lang="ko">Module Description</description>
    <version>0.1</version>
    <date>2016-02-22</date>
    <category>service</category>

    <author email_address="overcode@overcode.co.kr" link="http://overcode.co.kr">
        <name xml:lang="ko">overcode</name>
    </author>
</module>



Comments