예전에 zbXE 퍼머링크 달기라고 팁을 하나 올렸었는데요.

그걸 중심내용을 건드리지 않고 애드온으로 제작해 보았습니다.

위 제목이 무슨 말이냐 하면

http://www.animeclub.net/zbXE/57279 의 주소를

http://www.animeclub.net/zbXE/entry/문자-퍼머링크-주소로-사용하기 의 주소로 사용 할 수 있도록 해주는 겁니다.
(여기서 출력하면 주소창에는 urldecode() 처리가 되질 않아서 깨지네요... 복사해서 붙여넣기 후 열어보세요)

이런 방식은 '텍스트큐브' 에서 사용 하는 방식으로 zbXE에서도 사용할 수 있도록 구현해 봤습니다.





특수문자 제거 위 설정 화면 처럼 기본 특수문자 설정 이외의 문자들을 잘라낼수 있도록 특수문자를 추가할 수 있도록 하였습니다.
구분은 <> 으로 해주시면 됩니다.
(특수문자 구분 기호를 처음에 |@|로 하였는데 a|@|b 이렇게 적어놓으면 Array로 변해버리네요.)

Entry 구분기호 기본적으로 entry/ 라는 이름이 무난하다고 봤습니다.
@나 : 등 다른 특수문자등도 사용 가능합니다.
그리고 이 기능을 설정 후에는 .htaccess 의 제일 하단에 아래의 내용을 추가해주세요.
# Entry link
RewriteRule ^구분기호(.*)$ ./index.php?entry=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+)/구분기호(.*)$ ./index.php?mid=$1&entry=$2 [L]

주소 접근식은 'http://도메인/모듈/구분기호Entry이름' 입니다.
또한, rewrite mod가 사용 불가능한 계정에서는 'http://도메인/?구분기호Entry이름' 이런식으로 접근 하실 수 있습니다.


위 부분이 설정이 되셨다면 게시판 등에서 위 주소로 바뀔 수 있도록 한가지 더 소스를 수정해주셔야 합니다.

예) 게시판 리스트 출력 소스
제로XE/modules/board/skins/xe_board/style_list.html
기존 : getUrl 로 검색해서 찾아봐주세요 ^^
{getUrl('document_srl',$document->document_srl, 'listStyle', $listStyle, 'cpage','')}
변경 : 애드온에 함수가 있으며 위 getUrl 함수를 적절히 변형시켜줍니다.
{procEntryTitle($module_info->mid, $document->get('extra_vars20'), $document->document_srl, $listStyle, $page)}

위 방식으로 공지사항 주소 및 게시물 링크 주소를 바꿔주시면 입력 주소형태 및 rewrite mod 여부에 따라 출력 되도록 하였습니다.


Entry 주소는 일단 xe_modules 테이블 에서 extra_vars20으로 임의로 설정하였습니다.
게시판 설정에서 20번째를 활성화하시면 제목이 아닌 원하시는 이름으로 퍼머링크 주소를 만드실 수 있습니다.
만약 활성화가 되지 않았다면 글 작성 시 게시물의 제목이 퍼머링크로 변형되어 입력 됩니다.

주의1) procEntryTitle() 함수를 쓴상태에서 애드온이 '미사용'일 경우 화면이 출력되지 않습니다.
주의2) 타 애드온 등과의 호환성은 아직 제대로 확인이 되질 않았습니다. 버그등이 있다면 알려주시면 수정하도록 하겠습니다.
by Anna 안나 2008. 11. 6. 00:31