한글처리 전역필터(dirify, trim_to, trim_from) 플러그인
Current Version: 3.2.02
한글이 포함된 문자열의 경우, 무버블 타입의 기존 문자열 관련 전역필터(Global tag attribute)가 제대로 한글을 처리하지 못하고 깨어지게 됩니다.
MT 3.2의 경우, 소위 Cool(MT 내부적으로는 Smart라는 표현을 사용함) URL 기능을 강화해서, 간편하게 개별 엔트리나 아카이브의 주소를 표현할 수 있게 해주는데, 이에는 dirify라는 태그 속성이 중요한 한 역할을 합니다. 그런데 MT의 dirify는 특수한 문자외에는 모두 제거해 버리기 때문에, 한글은 모두 빠져버려서 아무런 사용의 의미가 없어져 버립니다.
이 플러그인은 dirify, trim_to, trim_from 세가지 전역 태그 속성을 제공합니다.(Dynamic Publishing에서도 기능합니다.)
Requirement
PHP용 플러그인의 경우, 한글 처리에 mb(Multi-byte)string 라이브러리를 사용합니다. 동적파일생성(Dynamic Publishing)을 사용하는 경우에는 위 PHP 라이브러리가 설치되어 있는지 확인해야합니다.
Installation
압축파일을 다운받아서, 서버의 (mt home) 폴더에 복사한 후, $ tar xvfz koreanFilters.tar.gz 명령을 (mt home) 폴더 밑에서 실행하면, 아래와 같은 폴더 구조로 파일들이 풀리게 됩니다. telnet 등의 터미널 환경을 사용할 수 없는 분들은, 아래 폴더 구조대로 각각의 파일들을 하나씩 ftp로 올리면 됩니다.
- (mt home)/plugins/alogblog/koreanFilters.pl
- (mt home)/plugins/alogblog/lib/alogblogKorean.pm
- (mt home)/php/plugins/init.alogblog-koreanFilters.php
Description
dirify, trim_to, trim_from 은 모두 전역필터입니다. 즉 모든 문자열 관련 MT태그의 한 속성으로 언제든지 사용될 수 있습니다. 예를 들면, <MTBlogDescription dirify="1"> 혹은 <MTEntryBody trim_from="10"> 등과 같이 문자열 값을 가지는 태그에 사용합니다.
trim의 경우 UTF-8/EUC-KR 한글 모두, 한글 한 글자를 1로 갯수를 셉니다.
1.dirify="1"
dirify는 dir(디렉토리, 폴더, 파일 등의 의미) + ify(동사화)의 의미로, 어떤 문자열을 임의의 시스템상에서도 사용가능한 폴더/파일 명으로 만들어 주는 속성입니다. 주로 엔트리의 제목을 따서, 해당 파일의 이름으로 만들 경우에 사용됩니다.
MT 디폴트의 경우, 움라우트가 붙은 알파벳 a를 그냥 a로 바꿔주는 등의 기능을 수행하고, 그 외 특수문자(한글 등 포함)은 모두 제거하지만, 이 플러그인의 dirify는 그런것 없이, 키보드상의 특수문자만 한정적으로 제거합니다.
공백은 언더바( _ ) 문자로 디폴트로 바뀌지만, dirify="-" 식으로 다른 문자로 바꿔줄 수도 있습니다. 다만 이 문자가 임의의 파일시스템에서도 폴더/파일명으로 허용되는 것이라야 할 것입니다. 또 그 파일명이 결국엔 URL로 사용될 가능성이 크므로, 최종적으로 사용할수 있는 공백 대체 문자는 "_" 와 "-" 정도가 될것입니다.
2. trim_to="N"
trim_to는 주어진 문자열의 처음부터 N개의 문자까지만 반환하는 속성입니다. 한글의 경우 UTF/EUC 한글 상관없이 정확히 N문자까지 반환합니다.
3. trim_from="N"
trim_from은 추가로 이 플러그인이 제공하는 속성입니다. trim_to 와 반대로, N개의 문자부터 문자열의 끝까를 반환합니다. 주로 엔트리의 첫 부분에 템플릿 디자인상 특수한 이미지 등을 삽입하고자 할 경우를 위해 만든 것입니다.
Tip
* 초보자는 건너 뛰세요.
trim_from 은 그 적용예가 선뜻 떠오르지 않는 속성입니다. 그 대표적인 한 사용예를 들어봅니다.
Main Index Template 혹은 Individual Entry Archive Template 등에서 본문의 맨 앞에 어떤 이미지를 삽입하고자 하는 경우를 가정합니다. 이때 삽입할 이미지는, 해당 엔트리를 작성할 때, 직접 태그를 사용해서 삽입하는 경우가 아니라, 해당 엔트리의 카테고리에 맞게 특정한 아이콘/이미지 등을 자동으로 탬플릿 구조상으로 삽입하는 경우를 말합니다.
만약 템플릿 상에서 <MTEntries><img src="..."/><MTEntryBody>...</MTEntries>처럼 하면 본문 앞에 특정한 이미지가 삽입될것 같지만, 실제로는 본문을 나타내는 MTEntryBody가 <p>태그로 둘러싸여 나타나므로 삽입한 그림이미지와 본문이 단락이 져서 떨어져 나타나게 됩니다. 즉, <img src="..."/><p>본문...</p>이렇게 나타나기 때문입니다. 이 경우, 그림이 본문에 자연스레 둘러싸여 나타나길 원한다면,
<MTEntries><p><img src="..."/><MTEntryBody trim_from="4">...</MTEntries>로 템플릿을 작성하면 최종 결과는 <p><img src="..."/>본문...</p>와 같이 나타날 것입니다. (여기서 4는 <,p,> 세문자 다음부터 MTEntryBody의 끝까지를 취하기 위해서 입니다.)
위와 같은 팁에서 img의 src값으로는 해당 엔트리의 카테고리 명을 dirify한 이름으로 이미지를 만들어두고 <img src="<MTEntryCategory difify="1">.jpg"/> 식으로 자동화 할 수 있습니다. 혹은 MTEntryKeywords 를 이용해 직접 엔트리의 키워드란에 이미지주소를 입력해서 개별적으로 설정할 수 도 있습니다. 엔트리 본문에 직접 이미지를 삽입하는 경우에는 메인인덱스나 개별페이지에 모두 이미지가 나타나는 반면, 위와 같은 팁을 적용하면, 메인인덱스에는 이미지가 나타나고 개별페이지에는 나타나지 않는 등의 좀더 유연하게 구현할 수 있습니다.
License
Relased under the Creative Commons License.
Version History
- 3.2.02: dirify 처리방법 변경
- 3.2.01: MT 3.2 용, PHP 플러그인 제공
- 1.0 : MT 3.17 용
Comments
기다리던 3.2용 한글 플러그인이 드디어 나왔군요. :)
잘 쓰겠습니다.
Posted by: ike
|
2005년 10월 03일 오후 04시 59분
김인호돼지박사 한국형우주관 응^응=응 우주화시대 응원해주세요
Posted by: adekosis.myid.net
|
2007년 05월 31일 저녁 08시 06분