웹마스터 팁

오랜만에 팁을 적습니다.
이건 제가 요즘 만드는 모듈에 사용하고 있는 기능인데요.

만드신 모듈 설정화면에 접속하면 XE 자료실에 등록된 버전과 비교해서 새로운 버전이라면 알림 메시지와 함께 모듈을 설치유도해주는 방법입니다. 쉽게 일반 응용프로그램 실행할때 업데이트 소식 알려주는 기능이라고 생각하시면 되겠습니다.

※ 해당 설명은 nmsXE(공모전 탈락 모듈 ㅠㅠ)를 기준으로 설명합니다.

목차


모듈.class.php 모듈에 checkVersion 함수 만들기

var $version = '0.9.0';

       

/**

 * @brief version check

 **/

function checkVersion() {

    $body = '<?xml version="1.0" encoding="utf-8" ?>

        <methodCall>

        <params>

        <module><![CDATA[resource]]></module>

        <act><![CDATA[getResourceItems]]></act>

        <module_srl><![CDATA[18322904]]></module_srl>

        <package_srl><![CDATA[18335043]]></package_srl>

        <list_count><![CDATA[1]]></list_count>

        </params>

        </methodCall>';

    $buff = @FileHandler::getRemoteResource('http://www.xpressengine.com', $body, 3, 'POST', 'application/xml');



    if($buff) {

         $oXmlParser = new XmlParser();

         $xml = $oXmlParser->parse($buff);



         if($this->version != $xml->response->items->item->version->body) return true;

    }

}


모듈.class.php 내용 안에 적당한 위치에 위의 내용을 넣습니다.
이 방법은 resource 모듈(XE 자료실)의 API를 이용하여 최신 버전을 불러와 처리하는 방법입니다.
XE의 자료실 mid의 module_srl은 18322904란 값이니 변경할 필요는 없고 package_srl 주소만 변경하시면 됩니다.
package_srl 주소를 어떻게 확인하냐하면 아래와 같은 절차로 보시면 확인 가능하십니다.

그림1 - 자료등록 신청 후 나의 자료 목록
newversion1.jpg


그림2 - 나의 자료 목록의 내용을 선택 후 주소창에 보이는 package_srl 값을 확인
newversion2.jpg


resource API는 여러 정보를 많이 볼 수 있도록 되어있지만 여기서는 최신 버전만 확인하면 되는것이니 list_count의 값은 최신의 1로써 사용됩니다.
마지막으로 $buff로 받아온 정보를 $version의 값과 비교하게 되니 자료실에 신규등록, 새로운 버전을 등록 하실때는 항상 $version을 자료실의 버전명과 일치시키셔야 합니다.

모듈.admin.view.php 처음 접속 act에 알림 확인 기능 만들기

conf/module.xml에 기본 접속 act를 확인하고 그 함수의 적당한 위치에 아래의 내용을 추가합니다.

module.xml에서 최초 접근 act를 확인
<action name="dispNmsAdminIndex" type="view" standalone="true" admin_index="true" />

function dispNmsAdminIndex() { ...



/* 버전 업데이트가 되면 해당일을 알림 */

$oModuleModel = &getModel('module');

$config = $oModuleModel->getModuleConfig('모듈명');

$time = date('Ymd', strtotime(sprintf('-%d days', 7)));

if($config->check_date <= $time) {

    if($this->checkVersion()) Context::set('new_version',true);

    $oModuleController = &getController('module');

    $config->check_date = date('Ymd');

    $oModuleController->insertModuleConfig('모듈명', $config);

}



...}


기본적으로 일주일 단위로 XE의 정보를 확인하도록 했습니다.
초기 빈번한 패치가 있다면 '-%d days', 1 또는 2 같은 정보로 바꿔주시면 됩니다.


메인 템플릿 파일에 스크립트 넣기

보통은 관리자페이지에서 해당 모듈의 첫 화면의 파일명이 list.html이라고 보고 설명합니다.

list.html파일에 아무 위치나 아래의 내용을 넣어주세요.

<block cond="$new_version">

{@ Context::addHtmlHeader('

    <script type="text/javascript">//<![CDATA[

        var msg_nms_new_version = "'.$lang->msg_nms_new_version.'";

    //]]></script>

'); }

</block>


msg의 내용은 lang.php를 이용하셔도 되고 만드시는 자바스크립트 변수는 어떤걸로 하셔도 됩니다.
메시지 내용 또한 직접 적으셔도 무관하니 편하신데로 설정하세요.


자바스크립트로 값을 확인하고 본인의 자료 주소로 이동시키기

첫 페이지에서 불러올 자바스크립트에 삽입하는게 좋습니다.
해당 내용은 jQuery ready 기능을 이용해서 만들어 보겠습니다.

// 최신 버전 상태 알림

function new_version() {

    alert(msg_nms_new_version);



    var url = "http://www.xpressengine.com/?mid=download&package_srl=18335043";

    window.open(url,'_blank');

}



$('html').ready(function(){

    // 최신 버전 상태 알림

    if(typeof(msg_nms_new_version) != 'undefined') new_version();

});

모든 작업이 끝났습니다.
자료실에 새로운 버전을 올리고 설치한 사용자가 있을때 차후 버그개선으로 인해 새버전이 새로 등록이 된다면 사용자가 관리자페이지를 통해 해당 모듈로 접근하면 정해진 시간 단위로 XE 자료실과 버전을 비교하게되며 버전이 다르다면 알림을 통해 새로운 버전 설치를 유도할 수 있게 됩니다.

최종 알림 내용에서는 본인의 입맛에 맞게 좀 더 쉽게 사용자가 설치가능하도록(쉬운설치 등) 주소를 쉬운설치쪽으로 유도한다든가 바로 쉬운설치 진행 등 직접 작업하시면 되겠습니다.
태그 연관 글
  1. [2020/03/03] 포럼 홈페이지에 방문한 모든 사용자들에게 알림 메시지를 발송해 보세요. by 비볼디
  2. [2018/11/15] 묻고답하기 메시지 모듈 삭제후 계속 나타나는 태그 by jayj8
  3. [2018/07/13] 묻고답하기 첨부한 파일 링크 텍스트로 추출하는 방법은 무엇인가요? by diomin *2
  4. [2017/03/09] 묻고답하기 list.html에서 letter-spacing 수정 문의드립니다 by lifema**** *2
  5. [2016/03/25] 묻고답하기 레이아웃에서 변수선언시 모듈에서의 이용 by 카니엘 *3
제목 글쓴이 날짜
조회수 클릭때마다 올라가기(1.5.2 버전) 송동우님 팁 [7] 때린데 또때려 2012.04.08
제로보드 1.5 이상 게시판에 페이스북 댓글 플러그인 설치법 [1] 줄루™ 2012.03.05
모바일 첨부,댓글,댓글쓰기 항상 열어놓기 [10] 키스미베이베 2012.05.31
Xe1.5 + board 1.4[목록설정] [분류관리][게시글관리]느린 로딩해결법 [30] 황비 2012.01.14
아이디/비밀번호 찾기 메일안올때 확인사항 (리눅스) [3] 이영길 2008.09.29
1.5.1에서 파일업로드가 안 되는 분 보세요. [12] 별님왕자 2011.12.07
회원가입시 항목 설명부분에 html 태그를 쓰고플 경우 [3] sejin7940 2012.05.24
쉬운설치후 백지현상 해결방법 [복잡해서 다시 작성하였습니다.) [4] file 마음의빈자리 2012.05.24
코딩하시는 분들 참고.. [1] 엘카 2012.05.24
rewrite rule 예외처리하기 [2] 대류 2012.01.01
관리자페이지 게시판목록에서 일괄 권한 설정 안 되는 버그 수정법 [1] sejin7940 2012.05.17
socialxe 페이스북에서 SSL timeout 해결법 및 자체 서버사용시 500 문제해결 [1] spi-ca 2012.05.16
제작시 방화벽문제 때문에 고정IP 주소가 필요할때 [2] sejin7940 2012.05.09
XE1.5.0.2 시작 모듈 설정하는 방법 [16] file gayeon 2011.10.01
XE 공식 버튼2 삽입하기 [32] file 웹엔진 2011.05.14
확장변수 쉽게 출력하기 [7] lightnsalt 2008.03.04
모든 원하는 확장변수를 선택해서 최근게시물 위젯에 나타내기 간단팁 [12] jsuimage 2009.10.17
포인트 수정없이 원하는 레벨 아이콘이나 원하는 이미지 출력하기(0.29용) [20] 지연아빠 2008.02.02
모듈 개발하실때 새로운 버전이 나오면 알림 기능 만들기 [4] file 라르게덴 2011.02.24
그누보드 데이터를 XE 로 이전하는 컨버터 입니다. [2] file joyhmbc 2012.04.27