SomeMTPager, 방명록(Guestbook) 만들기
이것은 CategoryPager 플러그인의 업데이트 버전입니다. CategoryPager는 카테고리 아카이브에서 엔트리 목록을 페이징할 수 있도록 도와주는 것인데, 이 SomeMTPager는 이 기능 외에, 엔트리의 코멘트를 페이징 할수 있게 해줍니다. 다만 이 코멘트 페이징은 MT의 CGI 기능을 이용한 전용 방명록 생성을 염두에 두고 만들어 진것이라, 일반 정적 엔트리 생성에서는 그 사용을 보장하지 못합니다.
이 플로그인의 코멘트 페이징을 이용해서 만드는 방명록은, 새로운 블로그 생성/네 개(Site Javascript, Stylesheet, Individual, Comment Listing)의 템플릿만으로 아무런 정적인 파일 생성없이 이루어 집니다.
이 방명록 은 MT의 CGI 기능과 이 플러그인을 이용해 만든 것입니다. MT의 StyleCatcher 플러그인을 이용해 다양한 스킨을 간단히 이용하면 더욱 간단히 방명록을 만들 수 있습니다. 물론 자신만의 디자인을 적용하려면 그보단 조금더 시간이 들겠지만, 방명록 성격상 딱 한페이지의 CSS만 디자인하면 되므로 상대적으로 쉽다고 할 수 있을 것입니다.
그럼 문제는 과연 방명록을 MT의 CGI만을 이용해 운영할 경우 방명록 글이 많아 질수록 성능에 문제가 없을까 하는 점입니다. 제 방명록은 mySQL이 아닌 파일 DB를 사용하므로 더 늦을 겁니다. 즉 PHP/mySQL 디비를 사용한 전용 방명록(혹은 게시판) 툴을 사용해 생성한 것보단 분명 빠르진 않을 것입니다. 또 많은 분들이 기존의 다양한 쉬운 게시판 프로그램을 적용하기도 합니다. 과연 방명록을 MT의 CGI를 이용해 만들 실익이 있기는 있을까요?
제가 생각하는 궁색한 이유는 이렇습니다. 일단 방명록은 그 성격상 일반 BBS 게시판과 다름니다. 즉 방명록 이용자 즉 방문자들이 거의 "검색"을 할 가능성이 없는 체제입니다. 검색은 가장 동적인 성능이 많이 요구되는 한 기능입니다. 또 방명록 글 페이지 상의 이동 즉 네이게이션도 일반 방문자가 할 가능성도 낮습니다. 주로 방명록 주인이 어쩌다 이용하는 기능입니다. 결론적으로 방명록은 일반 게시판에 비해 동적인 기능이 낮고 대신 다른 기능이 좀더 요구됩니다. 그것은 바로 글을 남긴 후 빠른 응답, 그리고 쉬운(혹은 익숙한) 디자인 체제, 갈수록 문제화되는 코멘트 스팸, 이 경우엔 방명글 스팸을 퇴치할 나름의 수단이 제공되느냐..하는 점에 핵심을 두고 봐야 한다는 것입니다. 그런 점에서 이 플러그인을 이용한 MT 방명록은 MT의 디폴트 스팸 퇴치 기능외에 다양한 안티스팸 플러그인을 사용할 수 있으며, 디자인이나 관리 체계도 MT내에서 하나로 할 수 있다는 점이 그 장점이라고 볼 수 있습니다. (방명록에 글이 많아져서 속도에 지장을 느낀다 싶을 경우의 대책은 아래 Note를 참조하세요)
쉽게 구해서 쉽게 적용할 수 있는 게시판 응용 방명록도 하나의 대안이 되겠지만, MT 내에서 응용해서 쉽게 나만의 디자인(방명록 디자인이 거기서 거기겠지만)으로 생성할 수 있는 방명록 체제도 나름 편리하지 않을까 생각합니다.
Requirement
- Movable Type 3.2
Installation
압축 파일을 받아 (mt home) 밑에서 $ tar xvfz SomeMTPager-3.2.02.tar.gz 식의 명령으로 풀면 (mt home)/plugins/alogblog/ 폴더 밑에 SomeMTPager.pl 파일이 생성됩니다.
방명록(Guestbook) 만드는 순서
0.
(mt home)/mt-config.cgi 파일을 열고 "SafeMode" 을 "0"으로 설정합니다.
1.
방명록을 위한 새 블로그를 하나 생성한 후 다음과 같은 설정을 해줍니다.(블로그 ID를 기억합니다)
- Index 템플릿 메뉴에서 Site JavsScript, Stylesheet 템플릿을 제외한 다른 템플릿은 삭제합니다.
- Archive 템플릿 메뉴에서 "Individual Entry Archive"을 "guestbook" 으로 이름을 바꾸고, 나머지 아카이브(Category, Date-Based) 템플릿은 모두 삭제합니다.
- "Edit Weblog Configuration" 메뉴의 New Entry Defaults 탭메뉴에서 "Accept Comments"는 선택하고 "Accept TrackBacks"는 해제합니다.
- Feedback 탭메뉴에서 "Accept TrackBacks"를 해제하고, 나머지 Comments 상태에 관한 설정은 원하는 대로 정해줍니다.
- Publishing 탭메뉴에서 "guestbook" Individual Archive Mapping을 제외한 나머지 맵핑은 삭제합니다. 그리고 디폴트로 선택되어 있는 "Individual" Archive Types은 해제합니다. 즉 결과적으로 guestbook 맵핑만 남겨둔 후, 그 조차 해제(unselect)해서 실제로는 아무런 아카이브도 만들지 않는 것입니다.
2.
이제 새로 엔트리를 하나 작성합니다. 방명록의 윗부분에 나타날 메시지를 이 엔트리의 Entry Body에서 입력한 값을 이용하는 방식입니다. 방문자가 남기는 방명록 글은 결국 이 엔트리의 Comment인 셈입니다.(이 엔트리의 entry ID도 기억합니다)
3.
System 템플릿에 있는 "Comment Listing Template" 을 열고 그 내용은 모두 삭제한 후 아래 한 줄을 입력하고 저장합니다.
4.
"guestbook" 아카이브 템플릿을 엽니다.
<input type="hidden" name="static" value="1" /> 줄을 찾아 "1" 을 "0"으로 바꿉니다.
...
<div class="guestbook-<$MTCommentEvenOdd$>">...</div>
...
</MTComments>
</div>
<div id="msg-nav"><$MTSomeMTPager how_many_pagers="3" $></div>
<MTComments> 태그를 찾아 위처럼 속성을 추가합니다. [MTPageOffset] 는 필수입니다. [MTPageLastN=5] 는 한 페이지에 나타낼 방명글의 수(즉 Comment수)를 정하는 것입니다.
<MTComments> 태그 내에서는 <$MTCommentEvenOdd$> 태그를 사용할 수 있습니다. 이 값은 해당 코멘트의 짝홀수에 따라 "odd", "even"라는 문자열을 반환해 줍니다. 따라서 위처럼 CSS의 class 속성에 적절히 이용함으로써 짝/홀수 번에 따라 다른 디자인을 적용할 수 있습니다.
<$MTSomeMTPager$> 태그는 페이지 수를 표시해 줍니다. 그 속성 how_many_pager="3"을 사용한다면 그 결과는 <div id=..>1 | 2 | 3 ...10</div>식으로 나타납니다.
5.
이제 "guestbook" 템플릿의 다른 부분도 원하는 대로 디자인을 수정해 줍니다. 가령 방명록은 그 성질상 트랙백을 보내거나 받을 필요가 없으므로 트랙백 표시 부분을 아예 템플릿에서 제거합니다. 그리고 나머지 메타 태그 부분 등도 필요 없는 부분은 다 제거합니다. 왜냐면 이 방명록은 동적으로 이 템플릿을 해석해서 표시하는 방식이므로 가능하면 불필요한 태그를 제거하는 것입니다. 제 방명록의 HTML 소스를 열어서 참고 하십시요.
6.
"Site Javascript" 템플릿을 열고 static="1"라는 부분을 찾아 "0"으로 바꿔 줍니다. 아마 세군데 정도 있을 겁니다.
마지막으로 기존의 다른 블로그 등에 지금 만든 방명록의 주소를 삽입해야 할 것입니다.
이 방명록의 URL은 "your_domain/path_to_mt/mt-view.cgi/4/entry/62/guestbook/" 식이 됩니다. 여기서 "4"는 방명록을 위해 만든 블로그의 ID고, "62" 부분은 새로 하나 작성한 엔트리의 ID입니다. 그리고 반드시 URL은 슬래시(/)로 끝나야 합니다. ( 방명록 하나는 엔트리 하나라는 걸 이해한다면, 원하는 경우 복수개의 방명록을 만들 수 있음을 알 수 있습니다)
Notes
- 페이지 번호 목록(Pager)는 <li> 태그를 이용해 표시해 줍니다. 따라서 이를 가로로 페이지 번호를 나타내기 위해 적절한 CSS 규칙을 정해줘야 합니다. 아래는 그 한 예입니다.
/* Example of pager CSS */
#msg-nav { text-align: center; }
#msg-nav li { list-style:none; display:inline; }
#msg-nav li a { text-decoration: none; padding: 5px; }
#currentPage { color: red; }
#msg-nav li a:hover { border-top: 3px solid red; } - (mt home)/plugins/alogblog/SomeMTPager.pl 파일에서 페이저의 몇몇 값을 개인화할 수 있습니다.
- 만약 방명록에 방명글(Comment)이 꽤 많이 달려서 전체적으로 속도가 늦어 진다 싶으면 어떻게 하면 될까요? 그런 경우에는 인덱스 템플릿을 하나 만들고 기존 방명글을 하나 혹은 몇개의 분활된 정적 HTML 파일로 퍼블리싱해 준후, 그것의 링크를 "guestbook"템플릿에 삽입해준후, 그 Comment들은 모두 삭제해주는 식으로 DB를 비워주면 될것 입니다.
License
Relased under the Creative Commons License.Version History
- 3.2.02 : Add comment paging feature.
- 3.2.01 : Paging entries in category archive.
Comments
안녕하세요 알록블록님의 플러그인과 글을은 항상 도움이 많이됩니다.
저도 이번에 MT3.3으로 업글을 하고 새로 3.3용 플러그인을 설치 중입니다.
업그레이드 할때마다 젤 골치 아픈 녀석이
더이상 유지보수가 되지 않는 MTThreadedComments 입니다.
패치파일도 더이상 나오지 않아 코드를 직접 수정해서 사용하고 있습니다.
알록블록님도 해당 플러그인을 사용하고 계신것 같은데
혹시 MT 업그레이드 시 편의를 위해 별도의 수정을 가해서 사용하고 계시나요? 문득 궁금해서 글을 남겨봅니다.
Posted by: kueilove
|
2006년 10월 09일 오후 06시 02분