PHPで「最近のTag Cloud」を作る(MT3.3)

  • 投稿日:
  • by

最近、ほんと、タグクラウドにはまってます。。。(^^;)


で、今回は、

最近タグ付けされたタグをリストアップして、それをタグクラウドにしてしまおう

というカスタマイズです。


今回もPHPプラグインを併用しました。

で、今回のカスタマイズに必須なプラグインは、

Compare Plugin for Movable Type
MTCollate
TagSupplementalsプラグイン

の3つを利用します。



Ogawa::Memorandaさんのブログにて、

大まかに言って、Compare Pluginはフィルター、Collate Pluginはソーター、という相補的な役割を持っています。例えば、タグやアーカイブリストのような大きなリスト構造があるとき、必要なアイテムだけを抽出するにはCompare、適当なキーに対してソートする(あるいは、ソートして最初のN件を取り出す)にはCollateを使います。Compareで抽出したリストに対してCollateでソートするということもできます。

とのことです。


まず、上記の「Compare Plugin」「Collate Plugin」をMTにインストールしておきます。
(ダウンロードしたファイルをPluginディレクトリにアップするだけです(^^;))


そして、Tag Cloud を設置する場所に、以下を挿入します。

<style type="text/css">

#tag {
border: 1px solid #CCC;
padding: 10px;
margin: 10px;
text-decoration: none;
font-family: Verdana, Arial, sans-serif;
}

#tag a {
color: #000;
text-decoration: none;
}
#tag a:active,
#tag a:hover {
color: #6C3;
text-decoration: none;
}

#tag .hot a { color: #0000ff; }
#tag .old a { color: #444444; }
#tag .oldest a { color: #b0b0b0;}

</style>


<MTCollateCollect>
<MTTags>
<MTCollateRecord>
<MTCollateSetField name="tag_name"><$MTTagName$></MTCollateSetField>
<MTCollateSetField name="tag_id"><$MTTagID$></MTCollateSetField>
<MTCollateSetField name="tag_count"><$MTTagCount$></MTCollateSetField>
<MTCollateSetField name="tag_rank"><$MTTagRank$></MTCollateSetField>
<MTCollateSetField name="tag_search_link"><$MTTagSearchLink$></MTCollateSetField>
<MTCollateSetField name="tag_last_updated"><$MTTagLastUpdated format="%Y%m%d%H%M%S"$></MTCollateSetField>
</MTCollateRecord>
</MTTags>
</MTCollateCollect>


<div id="tag">
<MTCollateList limit="20" sort="tag_last_updated:#:-">

<?php

$sz = 12 + (int)(<$MTCollateField name="tag_count"$>/4);
$lh = (int)(<$MTCollateField name="tag_count"$>/4 + 100);

$str = "<span style=\"font-size:".$sz."px; line-height:".$lh."%\"><a href=\"<$MTCollateField name="tag_search_link"$>\" title=\"TAG [<$MTCollateField name="tag_name" encode_html="1"$>] の関連エントリー\" rel=\"tag\"><$MTCollateField name="tag_name" encode_html="1"$></a></span> ";

echo $str;

?>

</MTCollateList>
</div>


赤文字リストアップするタグの数です。


トップページにも実装してますが、実際にやるとこうなります。

recent-tagcloud.gif

名付けて!

「Recent Tag Cloud」

。。。


お試しあれ!