<?xml version="1.0" encoding="UTF-8" ?><feed xmlns="http://www.w3.org/2005/Atom">
   <title type="text">idea</title>
      <updated>2026-05-02T18:45:43+09:00</updated>
   <id>http://www.animeclub.net/idea_1/atom</id>
   <link rel="alternate" type="text/html" hreflang="ko" href="http://www.animeclub.net/idea_1"/>
   <link rel="self" type="application/atom+xml" href="http://www.animeclub.net/idea_1/atom"/>
   <generator uri="http://www.xpressengine.com/">XpressEngine</generator>
   <entry>
      <title>테스트 합니다.</title>
      <id>http://www.animeclub.net/52518</id>
      <published>2008-05-08T19:52:43+09:00</published>
      <updated>2008-09-15T18:19:27+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.animeclub.net/52518"/>
      <link rel="replies" type="text/html" href="http://www.animeclub.net/52518#comment"/>
      <author>
         <name>퍼머링크</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;퍼머링크 테스트&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>퍼머링크 주소를 번호가 아닌 문자로 생성해 주는 애드온 입니다.</title>
      <id>http://www.animeclub.net/52436</id>
      <published>2008-05-05T18:32:39+09:00</published>
      <updated>2008-09-15T18:17:57+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.animeclub.net/52436"/>
      <link rel="replies" type="text/html" href="http://www.animeclub.net/52436#comment"/>
      <author>
         <name>아니메클럽</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;예전에 zbXE 퍼머링크 달기라고 팁을 하나 올렸었는데요.&lt;BR&gt;&lt;BR&gt;그걸 중심내용을 건드리지 않고 애드온으로 제작해 보았습니다.&lt;BR&gt;&lt;BR&gt;위 제목이 무슨 말이냐 하면&lt;BR&gt;&lt;BR&gt;&lt;A onclick=&quot;window.open(this.href);return false;&quot; href=&quot;http://www.animeclub.net/idea/52436&quot;&gt;http://www.animeclub.net/idea/52436&lt;/A&gt; 의 주소를&lt;BR&gt;&lt;BR&gt;&lt;A onclick=&quot;window.open(this.href);return false;&quot; href=&quot;http://www.animeclub.net/idea/entry/%EB%AC%B8%EC%9E%90-%ED%8D%BC%EB%A8%B8%EB%A7%81%ED%81%AC-%EC%A3%BC%EC%86%8C%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0&quot;&gt;http://www.animeclub.net/idea/entry/문자-퍼머링크-주소로-사용하기&lt;/A&gt; 의 주소로 사용 할 수 있도록 해주는 겁니다.&lt;BR&gt;(여기서 출력하면 주소창에는 urldecode() 처리가 되질 않아서 깨지네요... 복사해서 붙여넣기 후 열어보세요)&lt;BR&gt;&lt;BR&gt;이런 방식은 &apos;&lt;A onclick=&quot;window.open(this.href);return false;&quot; href=&quot;http://www.textcube.org/&quot;&gt;텍스트큐브&lt;/A&gt;&apos; 에서 사용 하는 방식으로 zbXE에서도 사용할 수 있도록 구현해 봤습니다.&lt;BR&gt;&lt;BR&gt;&lt;img src=&quot;http://www.animeclub.net/files/attach/images/50712/436/052/entry.jpg&quot; alt=&quot;&quot; style=&quot;&quot; /&gt;&lt;BR&gt;&lt;BR&gt;&lt;B&gt;&lt;BR&gt;&lt;BR&gt;특수문자 제거&lt;/B&gt; 위 설정 화면 처럼 기본 특수문자 설정 이외의 문자들을 잘라낼수 있도록 특수문자를 추가할 수 있도록 하였습니다.&lt;BR&gt;구분은 &amp;lt;&amp;gt; 으로 해주시면 됩니다.&lt;BR&gt;(특수문자 구분 기호를 처음에 |@|로 하였는데 a|@|b 이렇게 적어놓으면 Array로 변해버리네요.)&lt;BR&gt;&lt;BR&gt;&lt;B&gt;Entry 구분기호&lt;/B&gt; 기본적으로 entry/ 라는 이름이 무난하다고 봤습니다.&lt;BR&gt;@나 : 등 다른 특수문자등도 사용 가능합니다.&lt;BR&gt;그리고 이 기능을 설정 후에는 .htaccess 의 제일 하단에 아래의 내용을 추가해주세요.&lt;BR&gt;# Entry link&lt;BR&gt;RewriteRule ^&lt;B&gt;&lt;FONT color=#ee2222&gt;구분기호&lt;/FONT&gt;&lt;/B&gt;(.*)$ ./index.php?entry=$1 [L]&lt;BR&gt;RewriteRule ^([a-zA-Z0-9_]+)/&lt;B&gt;&lt;FONT color=#ee2222&gt;구분기호&lt;/FONT&gt;&lt;/B&gt;(.*)$ ./index.php?mid=$1&amp;amp;entry=$2 [L]&lt;BR&gt;&lt;BR&gt;주소 접근식은 &apos;http://도메인/모듈/&lt;B&gt;&lt;FONT color=#ee2222&gt;구분기호&lt;/FONT&gt;&lt;/B&gt;Entry이름&apos; 입니다.&lt;BR&gt;또한, rewrite mod가 사용 불가능한 계정에서는 &apos;http://도메인/?&lt;B&gt;&lt;FONT color=#ee2222&gt;구분기호&lt;/FONT&gt;&lt;/B&gt;Entry이름&apos; 이런식으로 접근 하실 수 있습니다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;위 부분이 설정이 되셨다면 게시판 등에서 위 주소로 바뀔 수 있도록 한가지 더 소스를 수정해주셔야 합니다.&lt;BR&gt;&lt;BR&gt;예) 게시판 리스트 출력 소스&lt;BR&gt;제로XE/modules/board/skins/xe_board/style_list.html&lt;BR&gt;기존 : getUrl 로 검색해서 찾아봐주세요 ^^&lt;BR&gt;&lt;B&gt;{getUrl(&apos;document_srl&apos;,$document-&amp;gt;document_srl, &apos;listStyle&apos;, $listStyle, &apos;cpage&apos;,&apos;&apos;)}&lt;/B&gt;&lt;BR&gt;변경 : 애드온에 함수가 있으며 위 getUrl 함수를 적절히 변형시켜줍니다.&lt;BR&gt;&lt;B&gt;{procEntryTitle($module_info-&amp;gt;mid, $document-&amp;gt;get(&apos;extra_vars20&apos;), $document-&amp;gt;document_srl, $listStyle, $page)}&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;위 방식으로 공지사항 주소 및 게시물 링크 주소를 바꿔주시면 입력 주소형태 및 rewrite mod 여부에 따라 출력 되도록 하였습니다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Entry 주소는 일단 xe_modules 테이블 에서 extra_vars20으로 임의로 설정하였습니다.&lt;BR&gt;게시판 설정에서 20번째를 활성화하시면 제목이 아닌 원하시는 이름으로 퍼머링크 주소를 만드실 수 있습니다.&lt;B&gt;&lt;BR&gt;&lt;/B&gt;만약 활성화가 되지 않았다면 글 작성 시 게시물의 제목이 퍼머링크로 변형되어 입력 됩니다.&lt;BR&gt;&lt;BR&gt;주의1) procEntryTitle() 함수를 쓴상태에서 애드온이 &apos;미사용&apos;일 경우 화면이 출력되지 않습니다.&lt;BR&gt;주의2) 타 애드온 등과의 호환성은 아직 제대로 확인이 되질 않았습니다. 버그등이 있다면 알려주시면 수정하도록 하겠습니다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/div&gt;</content>
                  <category term="퍼머링크"/>
            <category term="문자주소"/>
            <category term="entry"/>
            <category term="url"/>
            
   </entry>
   <entry>
      <title>테스트 합니다.</title>
      <id>http://www.animeclub.net/50738</id>
      <published>2008-03-13T03:51:26+09:00</published>
      <updated>2008-09-15T18:18:53+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.animeclub.net/50738"/>
      <link rel="replies" type="text/html" href="http://www.animeclub.net/50738#comment"/>
      <author>
         <name>홍길동</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;테스트 합니다.&lt;br&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>zbXE에 퍼머링크 달기</title>
      <id>http://www.animeclub.net/50689</id>
      <published>2008-03-12T17:54:13+09:00</published>
      <updated>2008-09-25T09:29:35+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.animeclub.net/50689"/>
      <link rel="replies" type="text/html" href="http://www.animeclub.net/50689#comment"/>
      <author>
         <name>아니메클럽</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;font color=&quot;#ee2222&quot; size=&quot;5&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;퍼머링크란게 주소번호(document_srl) 변경과 관계없이 유일한 주소를 가지게 되는 방식입니다.&lt;br&gt;
(허나 zbXE는 게시물 이동되도 번호 그대로 더라고요;;)&lt;br&gt;
&lt;br&gt;
또하나는 한글 주소로도 사용가능합니다.&lt;br&gt;
텍스트큐브를 예로 들면 &quot;&lt;a href=&quot;http://%ed%83%9c%ed%84%b0/entry/%ED%8D%BC%EB%A8%B8%EB%A7%81%ED%81%AC&quot;&gt;&lt;strong&gt;http://textcube.org/entry/퍼머링크&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;-입니다&quot; &lt;/strong&gt;이런식의 주소 체계입니다.&lt;br&gt;
&lt;br&gt;
아래 내용을 적용 후에 글 하나 등록하시면 xe_documents 테이블에 글제목이 extra_vars20 컬럼으로 저장되도록 했습니다.&lt;br&gt;
&lt;br&gt;
주소체계는 &lt;strong&gt;&quot;&lt;/strong&gt;&lt;strong aiotitle=&quot;http://홈페이지/zbXE경로/board/:퍼머링크-입니다&quot;&gt;http://홈페이지/zbXE경로/board/:퍼머링크-입니다&lt;/strong&gt;&lt;strong&gt;&quot;&lt;/strong&gt; 이렇게 했습니다.&lt;br&gt;
&lt;br&gt;
동일한 제목으로 글 등록시 &quot;퍼머링크-입니다-1&quot;로 주소가 바뀌며 방식은 텍스트큐브 방식과 동일하게 해봤습니다.&lt;br&gt;
&lt;br&gt;
예) &lt;a class=&quot;editor_blue_text&quot; onclick=&quot;window.open(this.href);return false;&quot; href=&quot;idea/:zbXE%EC%97%90-%ED%8D%BC%EB%A8%B8%EB%A7%81%ED%81%AC-%EB%8B%AC%EA%B8%B0&quot;&gt;http://www.animeclub.net/idea/:zbXE에-퍼머링크-달기&lt;/a&gt; &amp;lt;-클릭해보세요&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;수정에 필요한 파일&lt;br&gt;
&lt;/strong&gt;제로XE/.htaccess&lt;br&gt;
제로XE/module/board/board.view.php&lt;br&gt;
제로XE/module/board/board.controller.php&lt;br&gt;
제로XE/module/board/skin/xe_board/style_list.html&lt;br&gt;
제로XE/module/document/document.admin.controller.php&lt;br&gt;
제로XE/classes/context/Context.class.php&lt;br&gt;
&lt;br&gt;
&lt;b&gt;XML Query&lt;/b&gt;&lt;br&gt;
제로XE/module/board/queries/getDocumentSrlInfo.xml&lt;br&gt;
제로XE/module/board/queries/getPermaSearch.xml&lt;br&gt;
&lt;font color=&quot;#999999&quot;&gt;-&amp;gt;파일은&lt;/font&gt;&lt;font color=&quot;#999999&quot;&gt; 첨부함&lt;/font&gt;&lt;br&gt;
&lt;br&gt;
제로XE/.htaccess 제일하단에 추가&lt;br&gt;

&lt;pre class=&quot;brush: php;&quot;&gt;# Permalink link
RewriteRule ^:(.*)$ ./index.php?entry=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+)/:(.*)$ ./index.php?mid=$1&amp;amp;entry=$2 [L]
&lt;/pre&gt;&lt;br&gt;
제로XE/board/board.view.php&lt;br&gt;

&lt;pre class=&quot;brush: php;first-line: 91;&quot;&gt;/**
* 게시글 목록을 추출함
**/

// 목록 구현에 필요한 변수들을 가져온다
$document_srl = Context::get(&apos;document_srl&apos;);
/*------------------------Permalink 추가-------------------------*/
    // document_srl 을 Permalink 주소로 변경
    $perma = (mb_detect_encoding(Context::get(&apos;entry&apos;)))?
        Context::get(&apos;entry&apos;):
        iconv(&quot;EUC-KR&quot;,&quot;UTF-8&quot;, Context::get(&apos;entry&apos;));
$oPermaController = &amp;amp;getController(&apos;board&apos;);
    if(!$document_srl) $document_srl = ($perma)? $oPermaController-&amp;gt;getDocumentSrlInfo($perma):&apos;&apos;;
/*------------------------Permalink 추가 끝-------------------------*/
$page = Context::get(&apos;page&apos;);

// document model 객체를 생성
$oDocumentModel = &amp;amp;getModel(&apos;document&apos;);
.......
&lt;/pre&gt;&lt;br&gt;
제로XE/board/board.controller.php&lt;br&gt;

&lt;pre class=&quot;brush: php;first-line: 8;&quot;&gt;class boardController extends board {

/**
* @brief 초기화
**/
function init() {
}
/*------------------------Permalink 추가-------------------------*/
/**
* @brief Permalink 주소로 document_srl 알아오기
**/
function getDocumentSrlInfo($perma) {
// $perma로 document_srl의 정보를 구함
if($perma) {
$args-&amp;gt;extra_vars20 = $perma;
$output = executeQuery(&apos;board.getDocumentSrlInfo&apos;, $args);
}

    if(!$output-&amp;gt;toBool()) return $output;

$list = $output-&amp;gt;data;
if(!$list) return;
if(!is_array($list)) $list = array($list);

foreach($list as $key =&amp;gt; $val) {
$document_srl = $val-&amp;gt;document_srl;
}

return $document_srl;
}

/**
* @brief Permalink 주소를 검사
**/
function getEntrySearch($obj){
    $output = executeQuery(&apos;board.getPermaSearch&apos;, $obj);
    if(!$output-&amp;gt;toBool()) return $output;
    $list = $output-&amp;gt;data;
    if(!$list) return;
    if(!is_array($list)) $list = array($list);
    foreach($list as $val) {
        $perma-&amp;gt;count = ($val-&amp;gt;entry == 0) ? true : false;
    }
    return $perma;
}

/**
* @brief Permalink value 처리(HTML,특수문자 등 제거)
**/
function getEntryReplace($obj){
    $title_arr = array(&quot;?&quot;,&quot;!&quot;,&quot;@&quot;,&quot;#&quot;,&quot;$&quot;,&quot;%&quot;,&quot;^&quot;,&quot;&amp;amp;&quot;,&quot;\\&quot;,&quot;;&quot;,&quot;:&quot;,&quot;.&quot;,&quot;/&quot;,&quot;=&quot;);
    $title = strip_tags($obj-&amp;gt;extra_vars20);
    $title = str_replace($title_arr,&quot;&quot;,$title);
    $title = str_replace(&quot; &quot;,&quot;-&quot;,$title);
    $perma-&amp;gt;extra_vars20 = $title;
    // Permalink 처리를 위한 controller 객체 생성
$oPermaController = &amp;amp;getController(&apos;board&apos;);
    $permaSearch = $oPermaController-&amp;gt;getEntrySearch($perma);

    $i = 0;
    while(!$permaSearch-&amp;gt;count)
    {
    $i++;
    $perma-&amp;gt;extra_vars20 = $title.&quot;-&quot;.$i;
    $permaSearch = $oPermaController-&amp;gt;getEntrySearch($perma);
    }
    return $perma-&amp;gt;extra_vars20;
}
/*------------------------Permalink 추가 끝-------------------------*/      
/**
* @brief 문서 입력
**/
function procBoardInsertDocument() {
.........&lt;/pre&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;
이어서...&lt;br&gt;

&lt;pre class=&quot;brush: php;first-line: 97;&quot;&gt;// document module의 model 객체 생성
$oDocumentModel = &amp;amp;getModel(&apos;document&apos;);

// document module의 controller 객체 생성
$oDocumentController = &amp;amp;getController(&apos;document&apos;);
/*------------------------Permalink 추가-------------------------*/
// entry url 처리를 위한 controller 객체 생성
$oPermaController = &amp;amp;getController(&apos;board&apos;);
/*------------------------Permalink 추가 끝-------------------------*/
// 이미 존재하는 글인지 체크
$oDocument = $oDocumentModel-&amp;gt;getDocument($obj-&amp;gt;document_srl, $this-&amp;gt;grant-&amp;gt;manager);

// 이미 존재하는 경우 수정
if($oDocument-&amp;gt;isExists() &amp;amp;&amp;amp; $oDocument-&amp;gt;document_srl == $obj-&amp;gt;document_srl) {
/*------------------------Permalink 추가-------------------------*/
        // 기존 permalink 정보와 같은지 확인
        if($oDocument-&amp;gt;get(&apos;extra_vars20&apos;)!=$obj-&amp;gt;extra_vars20){
        // permalink 결과 저장
        $ebj-&amp;gt;extra_vars20 = ($obj-&amp;gt;extra_vars20)?$obj-&amp;gt;extra_vars20:$obj-&amp;gt;title;
        $obj-&amp;gt;extra_vars20 = $oPermaController-&amp;gt;getEntryReplace($ebj);
        }
/*------------------------Permalink 추가 끝-------------------------*/
$output = $oDocumentController-&amp;gt;updateDocument($oDocument, $obj);
$msg_code = &apos;success_updated&apos;;

// 그렇지 않으면 신규 등록
} else {
/*------------------------Permalink 추가-------------------------*/
        // permalink 결과 저장
        $ebj-&amp;gt;extra_vars20 = ($obj-&amp;gt;extra_vars20)?$obj-&amp;gt;extra_vars20:$obj-&amp;gt;title;
        $obj-&amp;gt;extra_vars20 = $oPermaController-&amp;gt;getEntryReplace($ebj);
/*------------------------Permalink 추가 끝-------------------------*/
$output = $oDocumentController-&amp;gt;insertDocument($obj);
$msg_code = &apos;success_registed&apos;;
$obj-&amp;gt;document_srl = $output-&amp;gt;get(&apos;document_srl&apos;);
}
............&lt;/pre&gt;&lt;br&gt;
제로XE/module/board/skin/xe_board/style_list.html&lt;br&gt;

&lt;pre class=&quot;brush: xml;first-line: 62;&quot;&gt;&amp;lt;!-- 공지사항 출력 --&amp;gt;
&amp;lt;!--@foreach($notice_list as $no =&amp;gt; $document)--&amp;gt;
&amp;lt;tr class=&quot;notice&quot;&amp;gt;
    &amp;lt;!--@if($module_info-&amp;gt;display_number!=&apos;N&apos;)--&amp;gt;&amp;lt;td
class=&quot;notice&quot;&amp;gt;&amp;lt;!--@if($document_srl ==
$document-&amp;gt;document_srl)--&amp;gt;&amp;lt;img
src=&quot;./images/common/iconArrowD8.gif&quot; border=&quot;0&quot; alt=&quot;&quot;
/&amp;gt;&amp;lt;!--@else--&amp;gt;{$lang-&amp;gt;notice}&amp;lt;!--@end--&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--@end--&amp;gt;
    &amp;lt;!--@if($grant-&amp;gt;is_admin)--&amp;gt;&amp;lt;td
class=&quot;checkbox&quot;&amp;gt;&amp;lt;input type=&quot;checkbox&quot; name=&quot;cart&quot;
value=&quot;{$document-&amp;gt;document_srl}&quot; onclick=&quot;doAddDocumentCart(this)&quot;
&amp;lt;!--@if($document-&amp;gt;isCarted())--&amp;gt;checked=&quot;checked&quot;&amp;lt;!--@end--&amp;gt;
/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--@end--&amp;gt;
    &amp;lt;td class=&quot;title&quot;&amp;gt;
    &amp;lt;!--@if($module_info-&amp;gt;use_category == &quot;Y&quot; &amp;amp;&amp;amp; $document-&amp;gt;get(&apos;category_srl&apos;))--&amp;gt;
    &amp;lt;strong class=&quot;category&quot;&amp;gt;{$category_list[$document-&amp;gt;get(&apos;category_srl&apos;)]-&amp;gt;title}&amp;lt;/strong&amp;gt;
    &amp;lt;!--@end--&amp;gt;
&amp;lt;!------------------------Permalink 변경-------------------------&amp;gt;
    &amp;lt;a href=&quot;{getUrl(&apos;document_srl&apos;, $document-&amp;gt;document_srl,
&apos;listStyle&apos;, $listStyle,
&apos;cpage&apos;,&apos;&apos;,&apos;entry&apos;,$document-&amp;gt;get(&apos;extra_vars20&apos;))}&quot;&amp;gt;{$document-&amp;gt;getTitle($module_info-&amp;gt;subject_cut_size)}&amp;lt;/a&amp;gt;
&amp;lt;!------------------------Permalink 변경 끝-------------------------&amp;gt;
    &amp;lt;!--@if($document-&amp;gt;getCommentCount())--&amp;gt;
..........&lt;/pre&gt;&lt;br&gt;
이어서...&lt;br&gt;

&lt;pre class=&quot;brush: xml;first-line: 92;&quot;&gt;&amp;lt;!-- 일반 글 출력 --&amp;gt;
&amp;lt;!--@foreach($document_list as $no =&amp;gt; $document)--&amp;gt;
&amp;lt;tr class=&quot;bg{($no+1)%2+1}&quot;&amp;gt;
    &amp;lt;!--@if($module_info-&amp;gt;display_number!=&apos;N&apos;)--&amp;gt;&amp;lt;td
class=&quot;num&quot;&amp;gt;&amp;lt;!--@if($document_srl ==
$document-&amp;gt;document_srl)--&amp;gt;&amp;lt;img
src=&quot;./images/common/iconArrowD8.gif&quot; border=&quot;0&quot; alt=&quot;&quot;
/&amp;gt;&amp;lt;!--@else--&amp;gt;{$no}&amp;lt;!--@end--&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--@end--&amp;gt;
    &amp;lt;!--@if($grant-&amp;gt;is_admin)--&amp;gt;&amp;lt;td
class=&quot;checkbox&quot;&amp;gt;&amp;lt;input type=&quot;checkbox&quot; name=&quot;cart&quot;
value=&quot;{$document-&amp;gt;document_srl}&quot; onclick=&quot;doAddDocumentCart(this)&quot;
&amp;lt;!--@if($document-&amp;gt;isCarted())--&amp;gt;checked=&quot;checked&quot;&amp;lt;!--@end--&amp;gt;
/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--@end--&amp;gt;
    &amp;lt;td class=&quot;title&quot;&amp;gt;
    &amp;lt;!--@if($module_info-&amp;gt;use_category == &quot;Y&quot; &amp;amp;&amp;amp; $document-&amp;gt;get(&apos;category_srl&apos;))--&amp;gt;
    &amp;lt;strong class=&quot;category&quot;&amp;gt;{$category_list[$document-&amp;gt;get(&apos;category_srl&apos;)]-&amp;gt;title}&amp;lt;/strong&amp;gt;
    &amp;lt;!--@end--&amp;gt;
&amp;lt;!------------------------Permalink 변경-------------------------&amp;gt;
    &amp;lt;a href=&quot;{getUrl(&apos;document_srl&apos;, $document-&amp;gt;document_srl,
&apos;listStyle&apos;, $listStyle,
&apos;cpage&apos;,&apos;&apos;,&apos;entry&apos;,$document-&amp;gt;get(&apos;extra_vars20&apos;))}&quot;&amp;gt;{$document-&amp;gt;getTitle($module_info-&amp;gt;subject_cut_size)}&amp;lt;/a&amp;gt;
&amp;lt;!------------------------Permalink 변경 끝-------------------------&amp;gt;                       
    &amp;lt;!--@if($document-&amp;gt;getCommentCount())--&amp;gt;
............&lt;/pre&gt;&lt;br&gt;
제로XE/module/document/document.admin.controller.php&lt;br&gt;

&lt;pre class=&quot;brush: php;first-line: 285;&quot;&gt;/*------------------------Permalink 추가-------------------------*/
$oPermaController = &amp;amp;getController(&apos;board&apos;);
        $ebj-&amp;gt;extra_vars20 = ($obj-&amp;gt;extra_vars20)?$obj-&amp;gt;extra_vars20:$obj-&amp;gt;title;
        $obj-&amp;gt;extra_vars20 = $oPermaController-&amp;gt;getEntryReplace($ebj);
/*------------------------Permalink 추가 끝-------------------------*/
// 글의 등록
$output = $oDocumentController-&amp;gt;insertDocument($obj, true);
if(!$output-&amp;gt;toBool()) {
    $oDB-&amp;gt;rollback();
    return $output;
}
................&lt;/pre&gt;&lt;br&gt;
제로XE/classes/context/Context.class.php&lt;br&gt;

&lt;pre class=&quot;brush: php;first-line: 579;&quot;&gt;// rewrite모듈을 사용하고 인자의 값이 4개 이하일 경우
if($this-&amp;gt;allow_rewrite &amp;amp;&amp;amp; $var_count &amp;lt; 10) {
$var_keys = array_keys($get_vars);

        if($var_count == 1) {
    if($var_keys[0]==&apos;mid&apos;) return $this-&amp;gt;path.$get_vars[&apos;mid&apos;];
    elseif($var_keys[0]==&apos;document_srl&apos;) return $this-&amp;gt;path.$get_vars[&apos;document_srl&apos;];
} elseif($var_count == 2) {
    asort($var_keys);
    $target = implode(&apos;.&apos;,$var_keys);
    if($target==&apos;act.mid&apos; &amp;amp;&amp;amp;
!preg_match(&apos;/([A-Z]+)/&apos;,$get_vars[&apos;act&apos;])) return
sprintf(&apos;%s%s/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;mid&apos;],$get_vars[&apos;act&apos;]);
    elseif($target==&apos;document_srl.mid&apos;)  return sprintf(&apos;%s%s/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;mid&apos;],$get_vars[&apos;document_srl&apos;]);
    elseif($target==&apos;act.document_srl&apos;)  return sprintf(&apos;%s%s/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;document_srl&apos;],$get_vars[&apos;act&apos;]);
    elseif($target==&apos;mid.page&apos;)  return sprintf(&apos;%s%s/page/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;mid&apos;],$get_vars[&apos;page&apos;]);
    elseif($target==&apos;category.mid&apos;)  return sprintf(&apos;%s%s/category/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;mid&apos;],$get_vars[&apos;category&apos;]);
    elseif($target==&apos;act.mid&apos;)  return sprintf(&apos;%s%s/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;mid&apos;],$get_vars[&apos;act&apos;]);
} elseif($var_count == 3) {
            asort($var_keys);
    $target = implode(&apos;.&apos;,$var_keys);
    if($target==&apos;act.document_srl.key&apos;) {
    return sprintf(&apos;%s%s/%s/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;document_srl&apos;],$get_vars[&apos;key&apos;],$get_vars[&apos;act&apos;]);
    } elseif($target==&apos;document_srl.entry.mid&apos;) {/*-----------Permalink 추가-----------*/
    return sprintf(&apos;%s%s/:%s&apos;,$this-&amp;gt;path,$get_vars[&apos;mid&apos;],$get_vars[&apos;entry&apos;]); /*-----------Permalink 추가-----------*/
    } elseif($target==&apos;category.mid.page&apos;) {
    return sprintf(&apos;%s%s/category/%s/page/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;mid&apos;],$get_vars[&apos;category&apos;],$get_vars[&apos;page&apos;]);
    } elseif($target==&apos;mid.search_keyword.search_target&apos; &amp;amp;&amp;amp; $get_vars[&apos;search_target&apos;]==&apos;tag&apos;) {
    return sprintf(&apos;%s%s/tag/%s&apos;,$this-&amp;gt;path,$get_vars[&apos;mid&apos;],str_replace(&apos; &apos;,&apos;-&apos;,$get_vars[&apos;search_keyword&apos;]));
.......
&lt;/pre&gt;&lt;br&gt;
&lt;br&gt;
&lt;font color=&quot;#22aa66&quot;&gt;/*------------------------Permalink 추가-------------------------*/&lt;br&gt;
/*------------------------Permalink 추가 끝-------------------------*/&lt;br&gt;
&lt;/font&gt;이부분만 추가하거나 수정해주세요&lt;br&gt;
&lt;br&gt;
위 파일 줄라인 번호는 다를 수 있으니 비슷한 곳 찾으셔서 등록해주세요.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
ps : &lt;br&gt;
1. 소스 적용 이후 제대로 동작 안될 수도 있습니다. 자료는 백업 후 적용하세요. (제가 많이 허접합니다. ^^;)&lt;br&gt;
2. 보안점이나 사항이 있다면 같이 개선했으면 합니다. 저 잘 못합니다. ^^;&lt;br&gt;
3. 게시판 설정에서 확장변수 20번 설정해서 사용하면 제목따라가지 않고 원하는 이름으로 입력가능합니다.&lt;br&gt;
4. 변수명이나 명칭정하는게 좀 엉성해서... 멋진 변수명들 없을까요?? ^^&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
5. 조금 오류가 있어서 Context.class.php와 style_list.html 수정했습니다. 08.03.13 13:50&lt;br&gt;&lt;/div&gt;</content>
                  <category term="퍼머링크"/>
            <category term="permalink"/>
            <category term="절대주소"/>
            
   </entry>
</feed> 
