묻고답하기

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


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 남기남
작은개자리 게시판에 중복게시 못하게 할순없을까요?  
fjgal 로봇수집배제 설정후에도 로봇이 긁어갑니다.. [2] 2015.02.09 by fjgal
구름의저편 스케치북 레이아웃 질문입니다. [2] 2015.02.09 by imagineshop
newi 인증메일 좀 문의 합니다.  
어제가입한초보 [모바일] sketchbook5 스킨에서 게시판 출력 형식 [1] 2015.02.09 by imagineshop
컨티뉴 외부 DB 연동이 가능한지요(MYSQL ↔ MSSQL)  
제로보드신세계잼 스케치북5 게시판 리스트에서 댓글이 "1" 이렇게되있는데 ( ) 괄호등으로 감싸고싶습니다. [2] 2015.02.09 by 제로보드신세계잼
꾸링 스케치북5 모바일에서 다운로드 파일 용량/횟수 출력  
하늘384 모바일  
JerryGoldman 댓글 첨부파일 아이콘변경은 어떻게 해주나요? [1] file 2015.02.09 by 닉이
파이란1 언어선택위젯 글자크기와색깔 박스크기변경경로ㅜㅜ [1] file 2015.02.09 by DoorWeb
잘생긴모범생 일반>고급>기본url 설정 질문 [5] 2015.02.09 by 잘생긴모범생
JerryGoldman 첨부파일 가능한 형식을 더 추가해주고싶을때는 어떡하나요? [2] file 2015.02.08 by JerryGoldman
라이온킹스 초보)첫페이지 설정은 어떻게 하는지.. file  
커버 이미지 자동삽입 자동출력 애드온이 작동이 안되요 ㅜㅜ [3] 2015.02.08 by Kxo
JerryGoldman 게시판 상단 배너 클릭시 바로가기 [1] file 2015.02.08 by 키스투엑스이
Kxo 제가 만든 애드온이 작동을 안합니다! [3] file 2015.02.08 by Kxo
SUHONE 최근 위젯 & 게시판에 글쓴이의 포인트를 출력하고 싶어요.  
XE모듈 이런건 없나요?  
XE모듈 물어볼게있어요 [2] 2015.02.08 by 키스투엑스이
배움쉼터용 유챗과 아이콘샵 연동방법좀 알려주세요  
XESTUDIO ajax로 게시판 글 불러오기 [도움요청] [3] 2015.02.08 by okiz
샵사이드 회원가입후 가입완료창 나오는게 하는방법 문의드립니다.  
중년- 비화원도 추천을 할수있게 하려면.. [2] 2015.02.08 by 중년-
시원블루 도와주세요 ㅠㅠㅠㅠㅠ [1] file 2015.02.08 by XESTUDIO
휴우칫 위젯페이지에서 내용직접추가시 글 간격이 이상합니다. [5] file 2015.02.08 by 휴우칫
socialskyo 회원정보 수정시 잘못된 비밀번호 라고 나옵니다. [2] 2015.02.08 by socialskyo
미란다컥 확장변수(사용자 정의) 정렬이 선택값 초기화되며 안됩니다. [2] 2015.02.08 by 미란다컥
아형여옹 어디 수정해야하는지 가르쳐주세요  
레벨업777 비밀번호 재확인시 오류문제 [2] 2015.02.08 by 레벨업777