You cannot see this page without javascript.

Skip Navigation

XE 레이아웃 카메론 XE LAYOUT CAMERON XE2.0.11


애드온
2020.08.14 14:47

단어 차단 애드온 만들기

(*.224.201.148) Views 153 Votes 0 Comment 0
Extra Form
원문주소
페이지 00015
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

Block_Word Add-on

 

단어 차단 애드온 만들기

 

sol님의 글을 전문인용하여 재구성하였다. - http://xe.xpressengine.net/18229352

 

block_word 애드온은?

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

 

개발에 앞서 디렉토리 준비하기

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

addons/block_word/

  • conf

 

애드온의 정보 파일 info.xml 작성하기

모듈과 같이 애드온의 정보 파일인 info.xml에 작성자 및 애드온 정보를 작성합니다.

 

▶ addons/block_word/conf/info.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
    <title xml:lang="ko">단어 차단 애드온</title>
    <description xml:lang="ko">
        글과 댓글의 내용 중 지정한 단어를 ***와 같이 보이지 않도록 합니다.
        (XE스쿨 수정 2011.12. 20)
    </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>

 

blockword

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 변수 값으로 들어 옵니다.

 

▶ addons/block_word/block_word.addon.php

 

<?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\">//<![CDATA[\nvar addon_block_word='" . join("|",$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") 중에서 포함된 p와 a 엘리먼트 요소를 찾아 정규식을 이용해 치환합니다.

 

▶ addons/block_word/block_word.js

 

jQuery(function($){
    if(addon_block_word.length > 0){
        $(".xe_content").find("p,a").each(function() {
            var tmp = $(this).children().remove();
            var text = $(this).text();
            text = text.replace(new RegExp(addon_block_word,'g'),'***');
            $(this).text(text);
            $(this).append(tmp);
        });
    }
});

 

 

* class="xe_content" : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다.

 

* $(".xe_content") : class가 xe_content인 node의 jQuery 객체

 

※ 위키(wiki)에 작성된 내용으로 애드온을 동작시킬 수 없어서 실행파일을 수정하였다. 또한 스크립트 문제로 에디터가 영향을 받아 글작성에 문제가 있어서 JS 파일의 내용을 수정하였다.

 

완성된 단어 차단 애드온 다운로드

 

block_word_addon.zip

💖 탑돌이님 에게 암호화폐로 후원하기 💖

  • 아이콘을 클릭하면 지갑 주소가 자동으로 복사 됩니다

    입금주소 rp2diYfVtpbgEMyaoWnuaWgFCAkqCAEg28  

    XRP 리플 입금( 기부) 하는법

    데스티

    네이션 태그

    1175658134

    각 거래소에서 입금주소 와 데스티네이션 태그를 입력하시면 됩니다.


    QR 코드
    xrp.png

    리플 송금시 주의할 점

    • 송금 후에 잔액이 항상 20XRP를 유지가능하도록 해야한다.
    • 송금요청할 때 트렌젝션 사용시 0.000015XRP가 무조건 지불된다.
    • 리플에서 제공해주는 지갑에 보관단위가 XRP뿐만 아니라 다른코인(예: BTC, LTC 등), USD, KRW 단위로 저장해놓을 수 있다.

    만약 히스토리가 궁금할경우 https://xrpcharts.ripple.com/graph/ 에서 리플 지갑 주소를 입력하면 역추적이 가능하다.

    리플 주소를 처음 만들경우 주소는 발급되지만 실제 활성화가 되어 있지 않는다. 최소 20XRP을 어디선가 송금 받은 후부터 지갑이 활성화 된다. 일종의 지갑 구입 or 보증금인듯

    태그 연관된 글
    1. [2020/08/14] CMS 연령구분 회원가입 애드온 by 탑돌이 (97)
    2. [2020/08/14] CMS 기초 팝업 윈도우 애드온 만들기 by 탑돌이 (303)
    3. [2020/08/14] CMS 애드온의 제작 규칙 by 탑돌이 (63)
    4. [2020/08/14] CMS 애드온의 기초 이해 by 탑돌이 (184)
    5. [2020/08/14] CMS XE 애드온 개발하기 by 탑돌이 (45)
    6. [2020/08/14] CMS XE 애드온 by 탑돌이 (38)
    7. [2014/10/13] 공지사항 12개의 모듈과 애드온을 추가함 by 부운영자 (858)
    8. [2014/10/13] CMS 12개의 기능적인 모듈과 애드온 추가 by 부운영자 (961)
    TAG •
    Attach Images or Files

    Drop your files here, or click the button to the left.

    Maximum File Size : 0MB (Allowed extentsions : *.*)

    0 file(s) attached ( / )

    제로XE/라이믹스/그누/워드프레스

    회원만 쓰기 가능합니다.

    List of Articles
    No. Category Subject 페이지 Author Date Views
    Notice Tip&Tech xe 동작순서 부운영자 2015.08.24 977
    Notice Tip&Tech XE의 애드온 및 모듈의 기능 요약표 부운영자 2015.01.16 1219
    Notice Tip&Tech XEReferences 부운영자 2014.11.29 875
    Notice Tip&Tech XE 스킨 제작 매뉴얼 v1.1 (Korean, PDF) file 부운영자 2014.11.29 1236
    Notice Tip&Tech XE 개발자 매뉴얼 v1.1 (Korean, PDF) file 부운영자 2014.11.29 1732
    Notice Tip&Tech xe 레퍼런스 모음 file 부운영자 2014.10.10 2501
    화제의 글 Tip&Tech PHP용 로그 라이브러리 공유합니다. 부운영자 2021.03.29 48
    화제의 글 Tip&Tech plusad_widget 안되는것 ? 부운영자 2021.02.21 54
    화제의 글 Tip&Tech Font Awsome, XEICON 함께 사용하기 부운영자 2020.11.26 135
    265 Tip&Tech PHP Warning: Division by zero https://stackoverflow.com/questions/18408640/php-warning-division-by-zero If the expected value can be 0 (therefore does not need validation), I do this to keep things quick, clean and easy: ==&gt;깜금한 처리 $percentage = $sum1 / ($sum2 ?: 1) 부운영자 2021.05.16 1
    264 Tip&Tech PHP용 로그 라이브러리 공유합니다. PHP용 로그 라이브러리 공유합니다. PHP 개발할때 가장 불편한 점은 로그 출력이죠. 서버 사이드에서 실행되는 스크립트이다보니 로그가 파일로 출력되어 화면에 실시간으로 띄워서 보기가 어렵습니다. 보통 tail로 살펴보는 방법이 일반적으로 사용됩니다만 이 역시 서버의 특성상 나 혼자 접속한 개발서버라면 모르겠지만 ... 부운영자 2021.03.29 48
    263 XE/라이믹스 게시글 DB 수동이동 update rx_documents set module_srl = 288812 where module_srl = 118187; update rx_comments set module_srl = 288812 where module_srl = 118187; update rx_files set module_srl = 288812 where module_srl = 118187; 부운영자 2021.03.17 27
    262 매뉴얼 xml 쿼리 사용법 undefined groom.com 부운영자 2021.03.08 29
    261 Tip&Tech plusad_widget 안되는것 ? &lt;div id=&quot;plusad_widget_wrap&quot;&gt; &lt;div class=&quot;plusad_point&quot; cond=&quot;$widget_info-&gt;ad_point_use == &#039;yes&#039;&quot;&gt;&lt;a href=&quot;{getUrl(&#039;&#039;,&#039;mid&#039;,$widget_info-&gt;name,&#039;act&#039;,&#039;dispPlusadlist&#039;)}&quot; title=&quot;광고를 등록하세요&quot;&gt;AD&lt;/a&gt;&lt;/div&gt; &lt;ul id=&quot;plusad_widget&quot;&gt; &lt;!--@if(!$ad_list)--&gt; &lt;li&gt; &lt;a style=&quot;font-weight:bold; color:red;&quot; h... 부운영자 2021.02.21 54
    260 Tip&Tech Add chunk size setting to editor/uploader 대용량 파일 첨부 지원 by kijin · Pull Request #663 · rhymix/rhymix 라이믹스 1주년 기념 패치!!! 더이상 호스팅 업체의 업로드 용량 제한이나 클라우드플레어의 100MB 제한에 신경쓸 필요가 없도록 합니다. 단독서버라도 php.ini에서 업로드 허용 용량을 지나치게 키우면 메모리 사용량이 덩달아 늘어나므로 조금씩 나눠... 부운영자 2021.02.20 29
    259 Tip&Tech 애드센스 광고 출력 안되는 심각한 문제 애드센스 광고 출력 안되는 심각한 문제 페이지 내에 반응형 광고가 포함되어 있는 경우 발생하는 큰 문제 입니다. 저도 작지만 애드센스 수입이 고정적으로 있었는데 최근 급격한 수입이 감소한 것을 이상하게만 생각하다 오늘 이것 저것 점검하면서 또 질문게시판의 게시글을 보고 점검하면서 대략 원인을 찾았습니다. 우... 부운영자 2021.02.19 24
    258 XE/라이믹스 애드센스 출력이 안되는 케이스 중 하나 애드센스 출력이 안되는 케이스 중 하나 예전에는 문제가 없었던 것 같은데 최근 구글에서 변화가 있었는지 이런 케이스는 구글광고가 오류가 나고 출력이 안되니 참고해서 광고 출력 방법을 변경하셔야 할 것 같아 공유해 드립니다. 화면에 출력될 광고 여러개를 한꺼번에 요청하고 그중 일부는 display:none 등으로 처리하... 부운영자 2021.02.04 23
    257 XE/라이믹스 XECon2016 - XE1 가지치기와 오픈소스 생태계의 미래. 포에시스 대표, 라이믹스 개발자... 부운영자 2021.01.05 26
    256 Tip&Tech Font Awsome, XEICON 함께 사용하기 undefined xsitelab.com 부운영자 2020.11.26 135
    255 Tip&Tech 트래픽 호로록 하는 도둑놈 (feat. 에디터 자동완성모듈) 트래픽 호로록 하는 도둑놈 (feat. 에디터 자동완성모듈) 자동완성모듈 기능 중 이미지 편집 기능 사용할 경우 스크립트 하나가 필요합니다. 그런데 이게 무려 2M에 가까운 용량입니다. 물론 필요한 파일은 사용해야죠. 그런데 문제는 실제 누구에게 필요한가? 를 생각하면 불필요한 트래픽이 누수되는 것을 확인할 수 있습... 부운영자 2020.10.10 133
    254 워드프레스 스팸방지 이미지 엑박방지 htacces wp &lt;IfModule mod_rewrite.c&gt; Options All -Indexes RewriteEngine on # Block Bad Bots &amp; Scrapers SetEnvIfNoCase User-Agent &quot;Aboundex&quot; bad_bot SetEnvIfNoCase User-Agent &quot;80legs&quot; bad_bot SetEnvIfNoCase User-Agent &quot;360Spider&quot; bad_bot SetEnvIfNoCase User-Agent &quot;^Java&quot; bad_bot SetEnvIfNoCase User-Agent &quot;^Cogent... 부운영자 2020.10.02 179
    253 워드프레스 워드프레스 설치순서 3 secret 부운영자 2020.10.02 4
    252 Tip&Tech 네이버 클라우드 플랫폼의 'Chatbot' 서비스를 소개합니다 [간단 챗봇 만들기] 네이버 클라우드 플랫폼의 ´Chatbot´ 서비스를 소개합니다. 안녕하세요, 네이버 클라우드 플랫폼입니다.몇 달 전, Chatbot 서비스 출시 소식을 전해드렸었는데요.... 네이버 블로그 | 네이버 클라우드 플랫폼 - 네이버 블로그 | 네이버 클라우드 플랫폼 부운영자 2020.08.29 97
    251 Tip&Tech memcache, memcached 비교 memcache, memcached 비교 PHP Client Comparison There are primarily two clients used with PHP. One is the older, mor... 네이버 블로그 | brian2님의 블로그 - 네이버 블로그 | brian2님의 블로그 탑돌이 2020.08.22 82
    250 위젯 확장변수 출력 위젯 만들기 Extra_vars Widget 확장변수 출력(extra_vars) 위젯 만들기 sol님의 글을 전문인용하여 재구성하였다. - http://xe.xpressengine.net/18235319 게시판의 게시물의 확장 변수를 출력하는 위젯입니다. Document 모듈을 이용하여 관리자가 원하는 확장변수를 순서데로 출력하는 위젯입니다. 개발에 앞서 디렉토리 준비하기 모든... 0004 부운영자 2020.08.15 104
    249 애드온 연령구분 회원가입 애드온 Member_join_extend Add-on 14세 이상/미만 구분 회원가입 애드온 만들기 SMaker님의 글을 전문인용하여 재구성하였다. - http://xe.xpressengine.net/wiki/18257064 회원가입시 14세 이상/미만 구분 및 약관/개인정보취급방침 동의 절차를 추가하는 애드온 입니다. 회원가입 폼인 &quot;dispMemberSignUpForm&quot; 액션시 애드온 호... 00016 탑돌이 2020.08.14 97
    » 애드온 단어 차단 애드온 만들기 Block_Word Add-on 단어 차단 애드온 만들기 sol님의 글을 전문인용하여 재구성하였다. - http://xe.xpressengine.net/18229352 block_word 애드온은? 사용자가 쓴 게시물과 댓글이 출력될 때 애드온 설정에 등록해 놓은 문자들을 &#039;***&#039; 로 가려서 보여주는 애드온을 만들어 볼 것 입니다. 애드온에서 단어들을 입력 받고, ... 00015 탑돌이 2020.08.14 153
    247 Tip&Tech 상단네비 목록(위로) 목록(아래로) 스크립트 안먹힘 위 두개 안먹힘 라이믹스 스케치북 게시판 및 스케치북 게시판 1.72 스크롤 이슈 https://xetown.com/index.php?mid=qna&amp;category=671911&amp;document_srl=757026&amp;comment_srl=757413&amp;page=1 기존에 작성했던 글입니다. 라이믹스 스케치북 게시판과 스케치북 게시판 1.7.2에서 이상하게 &quot;크롬&quot;에서만 위, 아래, 상단 바 댓글가... file 탑돌이 2020.08.14 126
    246 애드온 기초 팝업 윈도우 애드온 만들기 Popup window Add-on 기초 팝업 윈도우 애드온 만들기 애드온의 작동 방법과 호출 시점을 살펴보고 확장변수를 활용하여 외부 HTML 파일을 찾아 팝업윈도우 형태로 출력해 주는 기초적인 팝업 윈도우 애드온을 만들어 본다. 팝업 윈도우 애드온의 정보 파일(info.xml) 작성하기 XE코어가 xe/ 디렉터리에 설치되어 있다면 xe/... 00014 탑돌이 2020.08.14 303
    List
    Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
    / 14