용산철거민살인진압규탄
Monologue

Multi-blog Tag Cloud

2007년 03월 12일  오후 04시 13분
3.3부터는 기능이 기본적으로 내장되어있습니다만 멀티 블로그를 이용하는 경우는 각각의 블로그에 생성된 태그를 한 번에 보일 수 있는 플러그인 같은 게 없습니다. 가령 이 블로그는 메인블로그와 photo블로그, guestbook블로그 이렇게 세 개의 블로그를 생성해서 쓰고 있습니다. 그 특성상 guestbook은 태그 같은 게 필요 없지만 메인블로그와 photo 블로그는 공통된 태그를 가질 수 있습니다. 여러 블로그에서 사용된 태그를 한 자리에서 관리 할 수 있게 만든 코드입니다. 기본정렬이야 ‘가나다’ 순이지만 태그 수순 정렬이나, 최근 n개의 태그만 보이게 할 수도 있습니다. 예제 페이지에서 확인할 수 있습니다.

당연히 두 개 이상의 블로그를 생성해서 쓰는 경우를 위한 것이고, 다만 예제 1의 태그 Cutoff Parameter(created by Ogawa)는 무버블타입뿐만 아니라 어느 블로그 툴에서든 사용할 수 있습니다. (등록된 시간이 지남에 따라 태그의 폰트 색상이 자동으로 바뀐 다던가 카운트 수에 따라서 태그의 폰트 크기가 달라 지는 것 등등을 포함하고 있습니다. )

아마도 멀티블로그 이용자라면 GlobalListing플러그인이나 MultiBlog플러그인을 사용하고 있을 것입니다. 제 경우는 GlobalListing을 사용하고 있기 때문에 그에 맞춰서 코드를 작성했지만, Multiblog 플러그인 이용자도 같은 속성을 가지는 값이 분명히 있으니 그 부분만 바꿔주면 됩니다.  귀찮으면 이참에 GlobalListing도 설치하세요.

1.  필요한 플러그인 - plugin
Globallisting.pl (or MultiBlog)
MTCollate.pl
arithmetic.pl - 이 플러그인을 위해서는 Expressions이 필요합니다.

위의 플러그인들을 mt/plugins 디렉토리에 저장합니다. Expressions는 MT가 설치된 곳/extlib/MTPlugins/Expressions.pm 이렇게 저장됩니다. 각각의 플러그인 페이지에서 그 속성들을 살펴보면 좀 더 입맛에 맞게 표현할 수 있을 것입니다.


2.  기본 코드 - 화면에 나타나는 것이 아니라 이를테면 표현될 태그의 속성을 만들 어 주는 것입니다. 태그가 나타나는 페이지에 꼭 들어가야 하는 코드입니다.

<MTCollateCollect>
<MTGlobalEntries lastn="99999">
<MTEntryTags>
<MTCollateRecord>
<MTCollateSetField name="tag_name"><$MTTagName$></MTCollateSetField>
<MTCollateSetField name="tag_date"><$MTEntryDate format="%Y-%m-%d"$></MTCollateSetField>
<MTCollateSetField name="tag_count_1"><MTGlobalEntries include_blogs="1" lastn="1"><$MTTagCount$></MTGlobalEntries></MTCollateSetField>
<MTCollateSetField name="tag_count_3"><MTGlobalEntries include_blogs="3" lastn="1"><$MTTagCount$></MTGlobalEntries></MTCollateSetField>
<MTSetVar2 name="count" value="[MTCollateField name='tag_count_1']">
<MTAddVar name="count" value="[MTCollateField name='tag_count_3']">
<MTCollateSetField name="tag_total_count">
<MTGetVar2 name="count"></MTCollateSetField>
</MTCollateRecord>
</MTEntryTags>
</MTGlobalEntries>
</MTCollateCollect>

이 코드는 여러 개의 블로그 중에서 blog_id 1과 3에 대해 태그 이름과 날짜 그 태그 카운트를 집계하라는 것입니다. 뭔 소린지 모르겠으면 그대로 사용하시면 됩니다.

중요한 것은 멀티 블로그의 아이디를 꼭 지정해야 합니다.
include_blogs="1"과  include_blogs="3" 이 부분을 수정 해야 합니다. 대부분 메인블로그의 아이디는 1일 테고, 그 외 블로그의 아이디는 movabletype 관리자 페이지에서 마우스 올려보심 알 수 있으니, 그것으로 바꿔줍니다.

3.  최근 사용된 n개의 태그 보여주기 - (예제 2)

<ul style="list-style-type: decimal;">
<MTCollateList sort="tag_date:- tag_name:d" limit="10">
<MTCollateIfHeader name="tag_name">
<li>
<a href="http://antimine.kr/tag/<$MTCollateField name="tag_name"$>"><$MTCollateField name="tag_name"$> ( <$MTCollateField name="tag_total_count"$> )</a>
</li>
</MTCollateIfHeader>
</MTCollateList>
</ul>

2번의 코드 아래 넣어주면 됩니다.
limit="10"은 나타날 수를 조절하는 것입니다.
tag_date:- 의 의미는 태그 정렬을 날짜순으로 하는데 최근 것부터 보인다는 얘기입니다.
-를 +로 바꾸면 등록된 순으로 말하자면 오래된 것부터 나타나게 될 것입니다.
tag_named:d 는 중복돼서 나타나는 태그의 이름은 무시한다는 말입니다. 멀티 블로그 특성상 중복되는 태그 이름은 한 번만 나타나게 하고 그 수는 합치는 것입니다.
<a href="http://antimine.kr/tag/ 이 부분은 자신의 사이트 경로에 맞춰야겠지요. 기본 MT템플릿은 <a href="<$MTTagSearchLink$>" rel="tag"><$MTTagName$></a>게 표현하고 있습니다. 요것을 그대로 이용해도 됩니다만, 링크 주소를 깔끔하게 http://당신홈페이지/tag/태그이름 이런 식으로 나타내고 싶다면 EveryBody loves tags에서 RewriteEngine on 부분을 참고로 .htaccess를 만들면 됩니다.

계속 나오는 링크 경로는 말 안 해도 자신의 사이트로 맞춰야 합니다. =.=


4.  태그의 수가 많은 것부터 정렬 (예제 3)

<ul>
<MTCollateList sort="tag_total_count:#:- tag_name:d">
<MTCollateIfHeader name="tag_name">
<li>
<a href="http://antimine.kr/tag/<$MTCollateField name="tag_name"$>"><$MTCollateField name="tag_name"$> ( <$MTCollateField name="tag_total_count"$> )</a>
</li>
</MTCollateIfHeader>
</MTCollateList>
</ul>

tag_total_count:- 은 태그의 카운트가 많은 순으로 나타낸다는 뜻입니다. -를 +로 바꾸면 반대가 됩니다.

짐작하셨겠지만 tag_name, tag_total_count, tag_date 같은 이름은 MTCollate플러그인을 이용해서 임의로 그 속성을 만들어 준 것입니다. 그러니깐 이름을 바꿀 수도 그 속성값도 원하는 대로 할 수 있습니다.


5.  Cutoff Parameter 이용을 위해 수정해야 하는 부분. (예제 1)

Ogqwa님의 원래의 코드에서 li tilte 값만을 바꿔주면 됩니다. 이 코드의 자바스크립트를 보면 li title 값을 가지고 css가 다르게 적용되는 것을 알 수 있습니다.

원 코드를 보면
<li title="<$MTTagName$>:<$MTTagCount$>:<$MTTagDate format="%Y-%m-%d"$>">게 되어 있습니다.

<li title="태그 이름:태그 개 수:태그 날짜(형태 2007-03-13)"> 이것을 위 2번에서 지정한 새로운 값으로 바꿔주면 됩니다.
즉, <ul id="tags">.......</ul>부분을 다음 코드로 바꿔주면 됩니다.

<ul id="tags">
<MTCollateList sort="tag_name">
<MTCollateIfHeader name="tag_name">
<li title="<$MTCollateField name="tag_name"$>:<$MTCollateField name="tag_total_count"$>:<$MTCollateField name="tag_date"$>">
<a href="http://antimine.kr/tag/<$MTCollateField name="tag_name"$>" title="Tag: <$MTCollateField name="tag_name"$>"><$MTCollateField name="tag_name"$></a>
</li>
</MTCollateIfHeader>
</MTCollateList>
</ul>

다른 블로그 툴 사용자도 <li title=“....”> 부분만 수정하면은 그대로 Cutoff Parameter를 이용할 수 있습니다. 

외의 css와 자바스트립트 소스는 Ogawa님의 페이지에서 가져다가 붙이면 됩니다. 참고로 css는 <head>...</head>에서 불러들이는 스타일시트에 붙여 넣을 수 있지만 자바스크립트는 꼭 Cutoff Parameter가 사용되는 <ul id="tags">...</ul> 다음에 들어가야 합니다.

예제 페이지에서 본 것처럼 등록된 태그의 날짜에 따라 폰트 색상이 흐려지고 있습니다. 이 날짜의 기준(예를 들자면 60일이 지난 태그는 회색으로, 1년이 지난 태그는 더 흐린 회색으로, 2주가 안 된 것은 파란색으로 등등)은 자바스크립트 소스에서 색은 css에서 지정하면 됩니다.

이상, 두 개 이상의 블로그 사용 시 태그를 한 곳에서 관리할 수 있는 설명이었습니다. 궁금한 점은 코멘트를 이용해 주세요.
2개의 꼬리말이 있습니다. | 코멘트 1개 | 트랙백 1개

awesome!

tiiop[TypeKey Profile Page]   2007년 03월 25일  아침 08시 10분  reply
» Tag Cloud Template from The imperfect is our paradise
무버블타입 3.2에서는 tagwire와 XSearch 플러그인을 결합하여 Tag와 Cloud 그리고 검색 결과를 만들어 사용해 왔습니다. 3.3부터 Tag가 기본 내장되어 MT 태그도 변경 해주어야 하며 tagwire 플러그인이 아닌 TagSupplementals...
Tracked on 2007년 03월 29일  오전 10시 55분  Read More

TrackBack URL : http://antimine.kr/mt-tb.cgi/623.

Category : Monologue
Recent Tag Cloud
Cutoff Parameter: -3 -1 +1 +3 0
Tags


oogle  AJAX Search