묻고답하기

아래 글을 보고 그대로 따라서 애드온을 만들었는데요.


1.JPG


설치된 애드온으로 가보니, 정보가 하나도 안뜨고 설정으로 들어가도 xml 정보가 아예 안뜹니다.


block_word.zip <- 애드온은 이거입니다. (파일첨부)


도대체 뭐가 문제일까요 ㅠㅠ info.xml 파일도 분명 문제되는게 없어보이는데요!!



----------------------------------------------------------------------------------------

block_word 애드온은?
사용자가 쓴 게시물과 댓글이 출력될 때 애드온 설정에 등록해 놓은 문자들을 '***' 로 가려서 보여주는 애드온을 만들어 볼 것 입니다.
애드온에서 단어들을 입력 받고, 또 해당 mid들을 설정하도록 하고, 애드온에서는 javascript 정규식으로 해당 문자를 '***' 로 치환하는 구조로 개발할 것입니다.


개발에 앞서 디렉토리 준비하기
모든 모듈은 XE_ROOT(XE 설치디렉토리)/addons/ 에 위치 합니다. 앞으로 함꼐 만들 애드온은 block_word 이기 때문에 block_word이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.
"    block_word 
o    conf


애드온의 정보 파일 info.xml 작성하기
모듈과 같이 애드온의 정보 파일인 info.xml에 작성자 및 애드온 정보를 작성합니다.
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
    <title xml:lang="ko">단어 차단 애드온</title>
    <description xml:lang="ko">
        글과 댓글의 내용 중 지정한 단어를 ***와 같이 보이지 않도록 합니다. 
    </description>
    <version>0.1</version>
    <date>2009-08-14</date>
    <author email_address="sol@ngleader.com" link="http://ngleader.com">
        <name xml:lang="ko">sol</name>
    </author>
    <extra_vars>
        <var name="word">
            <title xml:lang="ko">차단할 문자</title>
            <description xml:lang="ko">차단할 문자를 ,로 구분하여 입력해 주세요.</description>
        </var>
    </extra_vars>
</addon>
 
block_word 애드온의 경우 관리자가 차단할 단어를 등록해야 합니다. 그래서 <extra_vars> 부분에 
        <var name="word">
            <title xml:lang="ko">차단할 문자</title>
            <description xml:lang="ko">차단할 문자를 ,로 구분하여 입력해 주세요.</description>
        </var>
와 같이 word 라는 변수명, title과 설명을 입력하면 관리자 화면에서 위와 같은 폼이 생성됩니다.


block_word.addon.php 작성하기
block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 합니다.


block_word.addon.php 가 하는 일은 앞에서 info.xml에서 extra_vars에 등록한 word를 받아 XE의 Request 방법인 GET/POST(HTML), XMLRPC, JSON 중 GET/POST(HTML) 일 경우에만 block_word.js 파일을 로드를 하고 block_word.js에서 치환하는 작업을 합니다.

그리고 info.xml의 extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info->word 변수 값으로 들어 옵니다.


<?php
    if(!defined("__ZBXE__")) exit();

    /** 
     * @file block_word.addon.php
     * @author sol (sol@ngleader.com)
     * @brief 단어 차단 애드온
     **/

     if($called_position == 'after_module_proc' && !in_array(Context::getResponseMethod(),array('XMLRPC','JSON')) {
       // info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리

        $words = explode(',',$addon_info->word);
        $block_words = array();

        for($i=0,$c=count($words);$i<$c;$i++){
            $words$i = trim($words$i);

            if(strlen($words$i)>0) $block_words[] = $words$i;
        }
        // 등록한 단어가 있을시에만 javascript 로드
        if(count($block_words)>0){
            // <head></head> 사이에 등록
            $js = "<script type=\"text/javascript\">//<!",$block_words) ."';\n//]></script>";
            Context::addHtmlHeader($js);
            // block_word.js 로드
            Context::addJsFile('./addons/block_word/block_word.js');
        }
    }
?>


block_word.js 작성하기
실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 jQuery로 node 중 css의 class가 xe_content인 $(".xe_content")로 정규식을 이용해 치환합니다.
(function($){ 
$(function(){
    if(addon_block_word.length > 0){
        var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word,'g'),'***');
        $(".xe_content").html(blocked);
    }
});
})(jQuery);


* class="xe_content" : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다
* $(".xe_content")  : class가 xe_content인 node의 jQuery 객체

글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
@pple xe 코어 1.8.10으로 업데이트한 후 뷰포트가 사라짐  
KOTRA1 [제발ㅠ] 모바일 게시판 기본스킨 댓글 작성자 '레벨 아이콘' 미출력 문제.. [4] 2015.09.17 by KOTRA1
포동포동 레이아웃 아랫 부분이 아예 보이지 않습니다. file  
bluestar 웹엔진 레이아웃을 사용하는데 궁금한게 있습니다  
사란합니다 태그에 제목을 넣을수 있을까요?  
fm25 모바일에서 주소인식 [2] file 2015.09.17 by fm25
가르송 sql내역들 [2] 2015.09.17 by 가르송
위드시크릿 xe 게시판 글쓰기 자동양식 어떻게 하나요?ㅠㅠ [1] 2015.09.17 by 부산민지아빠
이자여 서브메뉴가 열리지 않습니다 [1] 2015.09.17 by 부산민지아빠
쩍새 덧글을 쓴 비회원들의 이름을 클릭하면 다른 엉뚱한 페이지로 전환되는 문제 file  
후에에에에엥 관리자 페이지 문제 어떡하죠... [1] 2015.09.17 by uppylook
비누남어 업데이트 이후 다국어 메뉴 깨짐? [6] file 2015.09.17 by 알렌
아나까떼 서브쿼리 Where 질문  
윤아랑 [게시판관련]원인을 도저히 모르겠어서 질문 좀 드려요.. [4] file 2015.09.17 by 윤아랑
초보자 스케치북5 게시판 제목 폰트 및 사이즈, 색상 등을 변경 [1] file 2015.09.17 by 마야
thdwjdtjr 스케치북 게시판 목록에서 color를 변경하고자 합니다 [1] 2015.09.17 by 마야
최황삼 이런 경우, XE를 복구할 수 있을까요? [8] 2015.09.17 by 최황삼
최황삼 새로운 서버 환경에서 XE의 "사이트 메뉴 편집"과 "사이트 디자인 설정"을 못하고 있습니다. [2] file 2015.09.17 by 최황삼
도로테비 비밀글 선택시 갤러리 게시판에서 비회원에게 썸네일 나오지 않는 문제  
레토나 nginx에 awstats설치하기 질문드립니다.