태터툴즈 플러그인

태터툴즈가 1.x에는 플러그인 기능이 있다. 0.9x까지는 태터툴즈에 기능을 추가하려면 태터툴즈를 직접 패치해야 한다. 그러나 플러그인 기능을 사용하면 태터툴즈를 패치하지 않고 '관리 도구'에서 플러그인만 설정해주면 된다. 설치하는 방법이 워낙 간단하기 때문에 이전에 태터툴즈를 패치해서 사용하던 기능을 플러그인으로 만들었다.

목차

태터툴즈 플러그인

태터툴즈가 1.x에는 플러그인 기능이 있다. 0.9x까지는 태터툴즈에 기능을 추가하려면 태터툴즈를 직접 패치해야 한다. 그러나 플러그인 기능을 사용하면 태터툴즈를 패치하지 않고 '관리 도구'에서 플러그인만 설정해주면 된다. 설치하는 방법이 워낙 간단하기 때문에 이전에 태터툴즈를 패치해서 사용하던 기능을 플러그인으로 만들었다.

첫 번째로 만든 플러그인이 QAOS.com에서 소개한 TraceWatch의 분석 코드를 쉽게 태터툴즈에 삽입할 수 있는 TraceWatch 로그였고, 두 번째로 만든 플러그인이 태터툴즈에 인쇄 버튼을 달 수 있는 인쇄 버튼 플러그인이었다.

'인쇄 버튼 플러그인'을 태터센터에 올린 후 확인해보니 인쇄 버튼을 클릭하면 인쇄 페이지가 만들어지지만 항상 최신 글만 인쇄 페이지에 나타나는 치명적인 버그가 있다는 것을 알았다. 그 이유는 간단했다. 플러그인에서 사용한 파일이 index.php 파일이었기 때문이다.

태터툴즈의 각 폴더를 확인해보면 알 수 있지만 태터툴즈는 기본적으로 index.php 파일과 item.php 파일로 구성된다. 이중 index.php 파일은 https://offree.net/처럼 URL에 파일 경로가 없는 경우에 호출되는 파일이며, item.php 파일은 https://offree.net/457처럼 URL에 파일 경로가 있는 경우에 호출되는 파일이다. 글의 ID를 이용해서 인쇄 페이지를 표시하려면 당연히 URL에 글의 ID가 표시되는 item.php를 이용해야 한다.

여기까지는 쉽게 왔다. 그런데 문제는 플러그인에서 글의 ID를 가져올 수 있는 방법이 많지 않다는 점이었다. 태터툴즈의 이벤트 중 글의 ID를 가져올 수 있는 이벤트는 'ViewPostContent'처럼 치환자를 사용하지 않는 이벤트들인데 '인쇄 버튼 플러그인'은 인쇄 버튼을 달기 위해서는 꼭 치환자를 사용해야 하기 때문이다.

결국 '인쇄 버튼 링크'에 자바스크립트를 호출하는 코드를 삽입하고 자바스크립트를 'ViewPostContent' 이벤트를 이용해서 생성하는 방법으로 문제를 해결했다. 그러나 이 방법도 역시 문제가 있었다. 치환자를 이용해서 플러그인을 호출하면 글의 ID를 알 수 있는 방법이 없기 때문에 블로그의 글을 한 페이지당 하나만 출력하도록 설정해야 정상적으로 동작한다는 점이다.

인쇄 플러그인 사용법

이 부분은 태터툴즈의 이벤트가 보강되면 수정하도록 하겠다. 이 인쇄 버튼을 사용하는 방법은 다음과 같다.

플러그인 설치
내려받은 플러그인을 푼 후 태터툴즈의 플러그인 폴더로 폴더째 복사한다.
플러그인 설정
'관리 도구/환경 설정/플러그인 관리'에서 '인쇄 버튼'을 '미사용'에서 '사용중'으로 변경한다.
블로그 설정
'관리 도구/스킨 관리/스킨에 맞춘 출력 설정'을 클릭하고 '블로그 글을 한 페이지 당 1개 보여줍니다'로 변경한다.
.htaccess 변경

좋아하는 편집기로 '.htaccess'를 불러온 후 다음처럼 변경한다. 적색 줄이 새로 추가된 줄이다.

RewriteEngine On
RewriteCond %{ENV:REDIRECT_SURI} !^$
RewriteRule (.*) - [L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [L]
RewriteRule ^print/[0-9]+$ plugins/PrintArticle/item.php [E=SURI:1,L]
스킨 변경
자신이 사용하는 Skin.html 파일의 적당한 위치에 [ ##_printarticle_## ]이라는 치환자를 삽입한다.
인쇄용 스킨 생성
인쇄를 하기 위해서는 별도의 인쇄용 스킨이 필요하다. 태터툴즈의 표준 스킨을 사용하는 경우에는 압축 파일에 포함된 skin_print.html 파일을 /skin/Tattertools_skyline_ko 폴더에 복사하면 된다. 그러나 이외의 스킨을 사용하는 사람은 스킨 파일을 직접 변경해야 한다. 이 인쇄용 버튼을 자주 사용하는 사람은 스킨을 제작하는 분께 인쇄용 스킨 제작을 문의하는 것도 한 방법이다. 변경하는 방법은 스킨마다 차이가 있다. 일반적으로 <s_t3> 태그와 <s_article_protected> 태그 사이에서 <div> 태그를 제외한 모든 내용, <s_article_rep> 태그와 </s_article_rep> 태그 사이의 내용 중 불필요한 내용, </s_article_rep> 태그와 </s_t3> 태그 사이에서 <div> 태그를 제외한 모든 내용을 지우면 된다.

좌/우측 패널이 존재하는 경우 해당 <div> 태그도 삭제해야 한다.

인쇄용 스킨

다음은 태터툴즈의 표준 스킨을 인쇄용 스킨(skin_print.html)으로 변환한 경우이다. 대충 다음처럼 구성되면 된다.

<s_t3>
  <div id="container">
      <s_article_protected>
        <div class="entry_protected">
          <h2>[##_article_rep_title_##]</h2>
          <span class="date">[##_article_rep_date_##]</span>
          <p>보호되어 있는 글입니다. 내용을 보실려면 비밀번호를 입력하세요.</p>
          <p><label for="[##_article_password_##]">비밀번호 ::</label>
            <input type="password" maxlength="16" id="[##_article_password_##]" name="[##_article_password_##]" value="" onkeydown="if (event.keyCode == 13) [##_article_dissolve_##]" />
            <input type="button" class="submit" value="submit" onclick="[##_article_dissolve_##]" />
          </p>
        </div>
        <hr />
      </s_article_protected>
      <!-- entries -->
      <s_article_rep>
        <div class="entry">
          <h2><a href="[##_article_rep_link_##]">[##_article_rep_title_##]</a></h2>
          <span class="name"><a href="[##_article_rep_category_link_##]">[##_article_rep_category_##]</a> |  [##_printarticle_##]</span> | <span class="date">[##_article_rep_date_##]</span>
          <div class="article"> [##_article_rep_desc_##] </div>
          <div class="btn_top"><a href="#top"><img src="./images/btn_top.gif" /></a></div>
            </div>
          </s_rp>
        </div>
      </s_article_rep>
</s_t3>

관련 글타래

2006/05/03 19:44 2006/05/03 19:44
글쓴이
author image
운영체제의 모든 것을 운영하고 있는 IT 블로거. IT 블로거라는 이름은 현재 시국때문에 시사 블로거로 바뀐 상태다. 그러나 나는 아직도 시사와 사회에 관심이 많은 IT 블로거일 뿐이다. 컴퓨터, 운영체제, 시사, 가족, 여행, 맛집, 리뷰등과 살면서 느끼는 소소한 일상이 블로그의 주제이다. 왼쪽의 아이콘은 둘째 딸 다예가 그린 내 모습이다.
오늘의 글
인기있는 글
조회수 많은 글 | 베오베
댓글 많은 글 | 베오베

Trackback

Trackback Address :: https://offree.net/trackback/474

Facebook

Comments

  1. 전설의핑크팬더 2006/05/03 20:16

    판 올림이라는 표현 너무 좋네요 ^^
    표현이 너무 좋아 글을 남기고 갑니다.

    perm. |  mod/del. reply.
    • 도아 2006/05/04 11:23

      맞춤법 검사기로 돌린 후 글을 올려보면 제가 사용하는 말 중 불필요한 외래어가 꽤 있더군요. 또 자동적으로->자동으로처럼 은연 중 배어있는 일본식 표현도 꽤 되고요.

      그래서 가급적이면 우리 말을 사용하기로 했습니다. 조금 귀찮아도 맞춤법 검사기로 돌려보고 글을 올리고 있습니다.

  2. Chester 2006/05/03 21:09

    보강되어야 하는 이벤트가 있다면 지체없이 www.tattertools.com/ko/forum 에 알려주십시오.. ^^

    perm. |  mod/del. reply.
    • 도아 2006/05/04 11:24

      제 블로그에 글을 올리고 정리해서 올릴 생각입니다. 그럼 수고해주세요... 1.0.5만 눈이 빠지게 기다리고 있습니다. 요새는 트랙백 스팸이 하루에만 100여건씩 날나옵니다.

  3. 새우깡.. 2006/09/24 09:49


    있는 그대로 했는데..왜 전 안되는 걸까요?

    perm. |  mod/del. reply.
    • 도아 2006/09/24 11:03

      모릅니다. 그대로 했다면 당연히 되야 하므로 그대로 안한 것으로 봐야겠지요.

      아울러 그대로 했다는 말 한 마디로는 도와주고 싶어도 도울 수 있는 방법이 없습니다.

클릭!

(옵션: 없으면 생략)

글을 올릴 때 [b], [i], [url], [img]와 같은 BBCode를 사용할 수 있습니다.