첫 번째로 만든 플러그인이 필자가 QAOS.com에서 소개한 TraceWatch의 분석 코드를 쉽게 태터툴즈에 삽입할 수 있는 TraceWatch 로그였고, 두 번째로 만든 플러그인이 태터툴즈 에 인쇄 버튼을 달 수 있는 인쇄 버튼 플러그인이었다.
인쇄 버튼 플러그인을 태터 센터 에 올린 후 확인해보니 인쇄 버튼을 클릭하면 인쇄 페이지가 만들어지지만 항상 최신 글만 인쇄 페이지에 나타나는 치명적인 버그가 있다는 것을 알았다. 그 이유는 간단했다. 플러그인에서 사용한 파일이 index.php 파일이었기 때문이다.
태터툴즈 의 각 폴더를 확인해보면 알 수 있지만 태터툴즈 는 기본적으로 index.php 파일과 item.php 파일로 구성된다. 이중 index.php 파일은 http://offree.net/처럼 URL에 파일 경로가 없는 경우에 호출되는 파일이며, item.php 파일은 http://offree.net/457처럼 URL에 파일 경로가 있는 경우에 호출되는 파일이다. 글의 ID를 이용해서 인쇄 페이지를 표시하려면 당연히 URL에 글의 ID가 표시되는 item.php를 이용해야 한다.
사실 여기까지는 쉽게 왔다. 그런데 문제는 플러그인에서 글의 ID를 가져올 수 있는 방법이 많지 않다는 점이었다. 태터툴즈의 이벤트 중 글의 ID를 가져올 수 있는 이벤트는 ViewPostContent처럼 치환자를 사용하지 않는 이벤트들인데 인쇄 버튼 플러그인은 인쇄 버튼을 달기 위해서는 꼭 치환자를 사용해야 하기 때문이다.
결국 인쇄 버튼 링크에 자바스크립트 를 호출하는 코드를 삽입하고 자바스크립트 를 ViewPostContent 이벤트를 이용해서 생성하는 방법으로 문제를 해결했다. 그러나 이 방법도 역시 문제가 있었다. 치환자를 이용해서 플러그인을 호출하면 글의 ID를 알 수 있는 방법이 없기 때문에 블로그의 글을 한 페이지당 하나만 출력하도록 설정해야 정상적으로 동작한다는 점이다.
이 부분은 태터툴즈 의 이벤트가 보강되면 수정하도록 하겠다. 이 인쇄 버튼을 사용하는 방법은 다음과 같다.
- 내려받기: PrintArticlePlugin.zip
- 플러그인 설치
- 내려받은 플러그인을 푼 후 태터툴즈 의 플러그인 폴더로 폴더째 복사한다.
- 플러그인 설정
- 관리 도구/환경 설정/플러그인 관리에서 인쇄 버튼을 미사용에서 사용중으로 변경한다.
- 블로그 설정
- 관리 도구/스킨 관리/스킨에 맞춘 출력 설정을 클릭하고 블로그 글을 한 페이지 당 1개 보여줍니다로 변경한다.
- .htaccess 변경
- 좋아하는 편집기로 .htaccess를 불러온 후 다음처럼 변경한다. 적색 줄이 새로 추가된 줄이다.
RewriteEngine On RewriteCond %{ENV:REDIRECT_SURI} !^$ RewriteRule (.*) - [L] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+[^/])$ / [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" alt="top" /></a></div>
</div>
</s_rp>
</div>
</s_article_rep>
</s_t3>
Trackback
Trackback Address :: http://offree.net/trackback/474




Facebook