웹마스터 팁

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

만드신 모듈 설정화면에 접속하면 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
제목 글쓴이 날짜
[XE수정] '새버전을 업데이트...'이 부분이 눈에 거슬리면... [1] 브레인630 2015.08.11
DB에서 직접 시퀀스 생성하기 [3] 기진곰 2015.07.18
[SocialXE] 트위터 로그인시 프로필 사진이 표시되지 않는 문제 해결하기 [3] file TUW 2013.02.03
[SocialXE] 1.7.4.x 업데이트 후 SocialXE에서 '잘못된 요청입니다.' 오류가 뜨는 문제 해결하기 [15] file TUW 2014.03.26
[업데이트] [Easy Tip] [XE 1.7] XE 코어 js, css파일 jsdelivr CDN사용하기 [13] file Typhoon 2014.08.28
socialXE 에서 로그인시 소셜로그인과 XE 로그인 동시 구현하기 file 큐우우 2014.08.31
SocialXE 관련 사용팁 적용 수정 파일 [3] file 휘즈 2014.07.13
XE 왕초보를 위한 글 [13] 휘즈 2009.08.06
[XE 1.7] 스팸필터 설정이 안되는 경우 해결 방법 [3] 퍼니엑스이 2014.02.03
기본게시판에서 익명 선택하여 "게시글, 댓글" 작성이 가능하도록 세팅하기(sketchbook5 기준) [15] Ashon 2013.01.08
카페XE를 Domain 접속으로 설정 후 관리페이지 접속 불가할때 [1] 라르게덴 2013.08.24
XE로 API 처리 완전 정복하기(1) [6] file 라르게덴 2009.11.02
모듈 자동 생성기 [ModuleCreater] v0.2 (다국어 지원 기능 추가) [28] file 택피 2012.07.20
모듈 개발하실때 새로운 버전이 나오면 알림 기능 만들기 [4] file 라르게덴 2011.02.24
내 PC에서 XE 빠르게 설치하는 방법 [7] 차오이 2011.04.10
XE 홈피에 예쁜 음악BGM 넣는 방법(프레임 분리형 플래시BGM) 푸른커튼2 2011.04.18
제로보드 XE - 오토셋에 설치하기 [11] file 차오이 2007.08.11
방명록(Guestbook)에 소셜댓글을 다는 방법(소셜 방명록?) 띵야 2011.02.13
XE 용량 효과적으로 줄이기 [13] 코스트렐리아 2010.07.30
'대표도메인'연결후 '로그인'이 안될때,,(먹통) moonlight994 2011.01.24