« Movable Type의 CGI를 이용한 CategoryPager | Main | 무버블타입용 한국어 번역판 »

SomeMTPager, 방명록(Guestbook) 만들기

Go to English entry

이것은 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" 을 열고 그 내용은 모두 삭제한 후 아래 한 줄을 입력하고 저장합니다.

<meta http-equiv="refresh" content="0;url=<$MTCGIPath$>mt-view.cgi/<$MTBlogID$>/entry/<$MTEntryID$>/guestbook/" />

 4.
"guestbook" 아카이브 템플릿을 엽니다.
<input type="hidden" name="static" value="1" /> 줄을 찾아 "1" 을 "0"으로 바꿉니다.

<MTComments lastn="[MTPageLastN=5]" offset="[MTPageOffset]" sort_order="descend">
...
  <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.

TrackBack

TrackBack URL: http://alogblog.com/movabletype/korean_plugins/TCode.name/62.

QuickPost/Bookmarklet 등과 같은 자동화 도구로 트랙백을 보내시면, 귀하의 트랙백은 이 사이트의 운영자가 승인할 때까지 이 페이지에 표시되지 않습니다. 혹 자동화 방법으로 보내실 경우, 트랙백이 표시되지 않아도, 반복적으로 보내진 말아 주십시요. 감사합니다.

 

Comments

안녕하세요 알록블록님의 플러그인과 글을은 항상 도움이 많이됩니다.

저도 이번에 MT3.3으로 업글을 하고 새로 3.3용 플러그인을 설치 중입니다.

업그레이드 할때마다 젤 골치 아픈 녀석이

더이상 유지보수가 되지 않는 MTThreadedComments 입니다.

패치파일도 더이상 나오지 않아 코드를 직접 수정해서 사용하고 있습니다.

알록블록님도 해당 플러그인을 사용하고 계신것 같은데

혹시 MT 업그레이드 시 편의를 위해 별도의 수정을 가해서 사용하고 계시나요? 문득 궁금해서 글을 남겨봅니다.

Post a comment

☞ Your blog URL:

(TypeKeyOpenID 같은 인증 방식을 통한 코멘트만 입력 가능합니다. 이는 이 블로그가 무버블 타입 전용 플러그인에 관한 것이라, 최소 TypeKey 인증은 가지고 계실 것이라는 가정하에, 시범삼아 인증 코멘터만 받는 방식으로 운영해보고자 함입니다. 불편을 드려 죄송합니다.)