02. 단어 차단(block_word) 애드온 동작부분 작성하기

조회 수 649 추천 수 0 2010.11.25 12:59:57
sol *.130.111.148
제목 작성자 날짜
02. 단어 차단(block_word) 애드온 동작부분 작성하기 (current) sol 2010.11.25 12:59:57
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250229852130">block_word.addon.php 작성하기</a></li><li class="toc3"><a href="#h1250229836770">block_word.js 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 합니다.<br></p><p>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에서 치환하는 작업을 합니다.</p><p>그리고 info.xml의&nbsp;extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);">// info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리</span></p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 등록한 단어가 있을시에만 javascript 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// &lt;head&gt;&lt;/head&gt; 사이에 등록</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// block_word.js 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 jQuery로 node 중&nbsp;css의&nbsp;class가 xe_content인&nbsp;$(".xe_content")로 정규식을 이용해 치환합니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word,'g'),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.20 08:26:02
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250229852130">block_word.addon.php 작성하기</a></li><li class="toc3"><a href="#h1250229836770">block_word.js 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 합니다.<br></p><p>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에서 치환하는 작업을 합니다.</p><p>그리고 extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);">// info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리</span></p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 등록한 단어가 있을시에만 javascript 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// &lt;head&gt;&lt;/head&gt; 사이에 등록</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// block_word.js 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 jQuery로 node 중&nbsp;css의&nbsp;class가 xe_content인&nbsp;$(".xe_content")로 정규식을 이용해 치환합니다.</p><p><span style="color: rgb(255, 0, 0); ">*</span> .xe_content (node 중&nbsp;css의&nbsp;class가 xe_content) 는 XE에서 게시물/댓글 등&nbsp;콘텐트를 출력하는 node입니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word,'g'),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.20 08:25:01
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250229852130">block_word.addon.php 작성하기</a></li><li class="toc3"><a href="#h1250229836770">block_word.js 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 하도록 합니다. <br></p><p>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에서 치환하는 작업을 합니다.</p><p>그리고 extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);">// info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리</span></p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 등록한 단어가 있을시에만 javascript 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// &lt;head&gt;&lt;/head&gt; 사이에 등록</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// block_word.js 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 jQuery로 node 중&nbsp;css의&nbsp;class가 xe_content인&nbsp;$(".xe_content")로 정규식을 이용해 치환합니다.</p><p><span style="color: rgb(255, 0, 0); ">*</span> .xe_content (node 중&nbsp;css의&nbsp;class가 xe_content) 는 XE에서 게시물/댓글 등&nbsp;콘텐트를 출력하는 node입니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word,'g'),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.20 08:22:32
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250229852130">block_word.addon.php 작성하기</a></li><li class="toc3"><a href="#h1250229836770">block_word.js 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 하도록 합니다. <br></p><p>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에서 치환하는 작업을 합니다.</p><p>그리거 extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);">// info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리</span></p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 등록한 단어가 있을시에만 javascript 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// &lt;head&gt;&lt;/head&gt; 사이에 등록</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// block_word.js 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 $(".xe_content") 부분을 정규식을 이용해 치환합니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word,'g'),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.17 10:46:50
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250229852130">block_word.addon.php 작성하기</a></li><li class="toc3"><a href="#h1250229836770">block_word.js 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 하도록 합니다. <br></p><p>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에서 치환하는 작업을 합니다.</p><p>그리거 extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);">// info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리</span></p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 등록한 단어가 있을시에만 javascript 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// &lt;head&gt;&lt;/head&gt; 사이에 등록</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// block_word.js 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 $(".xe_content") 부분을 정규식을 이용해 치환합니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.17 10:45:57
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 하도록 합니다. <br></p><p>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에서 치환하는 작업을 합니다.</p><p>그리거 extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);">// info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리</span></p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 등록한 단어가 있을시에만 javascript 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// &lt;head&gt;&lt;/head&gt; 사이에 등록</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// block_word.js 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 $(".xe_content") 부분을 정규식을 이용해 치환합니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.14 18:49:49
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 하도록 합니다. <br></p><p>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에서 치환하는 작업을 합니다.</p><p>extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);">// info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리</span></p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 등록한 단어가 있을시에만 javascript 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// &lt;head&gt;&lt;/head&gt; 사이에 등록</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// block_word.js 로드</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 $(".xe_content") 부분을 정규식을 이용해 치환합니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.14 15:38:26
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 하도록 합니다. <br></p><p>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에서 치환하는 작업을 합니다.</p><p>extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // info.xml의 extra_vars에서 등록한 word를 변수명으로 관리자가 등록한 값을 받아 정리<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 등록한 단어가 있을시에만 javascript 로드<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // &lt;head&gt;&lt;/head&gt; 사이에 등록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // block_word.js 로드<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 $(".xe_content") 부분을 정규식을 이용해 치환합니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.14 15:36:22
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 하도록 합니다. <br></p><p>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에서 치환하는 작업을 합니다.</p><p>extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == '<span style="font-weight: bold;">after_module_proc</span>' &amp;&amp; !in_array(Context::getResponseMethod(),array('<span style="font-weight: bold;">XMLRPC</span>','<span style="font-weight: bold;">JSON</span>')) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',<span style="font-weight: bold;">$addon_info-&gt;word</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>실제 관리자가 설정한 단어를 ***로 치환 합니다. block_word.addon.php에서 선언한 javascript 변수 addon_block_word를 가져와 $(".xe_content") 부분을 정규식을 이용해 치환합니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>(function($){ <br>$(function(){<br>&nbsp;&nbsp;&nbsp; if(<span style="font-weight: bold;">addon_block_word</span>.length &gt; 0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var blocked=$(".xe_content").html().replace(new RegExp(addon_block_word),'***');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(".xe_content").html(blocked);<br>&nbsp;&nbsp;&nbsp; }<br>});<br>})(jQuery);<br></p></div><div class="eArea xe_content xe_dr_txt"><p><span style="color: rgb(255, 0, 0);">*</span><span style="font-weight: bold;"> class="xe_content"</span> : XE에서 게시판글, 댓글 등의 content를 출력하는 부분입니다<br>
<span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">$(".xe_content")</span>&nbsp; : class가 xe_content인 node의 jQuery 객체</p></div>
sol 2009.08.14 15:32:49
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250229852130">block_word.addon.php 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>block_word 애드온 회면 출력 단계에서 지정한 단어를 '***' 로 변경해 주면 되기 때문에 XE에서 애드온의 4가지의 호출순서에서 맨 마지막인 before_display_content 에서 호출 하도록 합니다. <br></p><p>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에서 치환하는 작업을 합니다.</p><p>extra_vars에 등록한 work에 사용자가 등록한 값은 block_word.addon.php에서 $addon_info-&gt;word 변수 값으로 들어 옵니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; if(!defined("__ZBXE__")) exit();<br><br>&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp; * @file block_word.addon.php<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief 단어 차단 애드온<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp; if($called_position == 'after_module_proc' &amp;&amp; !in_array(Context::getResponseMethod(),array('XMLRPC','JSON')) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words = explode(',',$addon_info-&gt;word);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $block_words = array();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for($i=0,$c=count($words);$i&lt;$c;$i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $words[$i] = trim($words[$i]);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strlen($words[$i])&gt;0) $block_words[] = $words[$i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(count($block_words)&gt;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $js = "&lt;script type=\"text/javascript\"&gt;//&lt;![CDATA[\nvar addon_block_word='" .&nbsp; join("|",$block_words) ."';\n//]]&gt;&lt;/script&gt;";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addHtmlHeader($js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::addJsFile('./addons/block_word/block_word.js');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250229836770">block_word.js 작성하기</h3></div>
sol 2009.08.14 15:18:58