Ramdom Entry Pickup
- 3月の悲しいセリフ大賞 (2005年03月31日)
- 楽天ポイントを現金化 (2005年06月07日)
- サンスベリア:「シングラリス」 (2005年07月01日)
- トラックバック先を整理 (2005年04月13日)
- キイロイトリ(リラックマ) (2005年06月06日)
« 結局、携帯を「W32S」に変更 | メイン | Secondaryサーバーを構築中 »
先日、「Tag Cloud」ページを作成したのですが、
私のキーワード付けの方法が間違っているのか、
すごい量になってしまいました。
このやり方では、Javascriptにて、
フォントサイズ、フォント色、カットオフのvisibilityをコントロールしています。
なので、これだけ大量のTAGがあるため、
すべてのTAGをブラウザが読み込み、
その後にクライアント側でJavascriptを処理しているため、
完全に表示されるまで、長い時間がかかってしまいます。
そこで、せっかくブログをPHP化しているので、
サーバーサイドでそれをやってしまおう、と思ったわけです。
それでは、解説をば。。。
まず、Tagwireのタグを使って、
TAGを抽出するだけのテンプレートを作成します。
・テンプレート名・・・「TAGGING-rare」(任意)
・出力ファイル名・・・「tagging-rare.php」(任意)
・テンプレートの内容
<MTTags>
<$MTTag$>:<$MTTagCount$>:<$MTTagDate format="%Y-%m-%d"$>:<$MTTag encode_url="1"$>
</MTTags>
これでテンプレートを保存・再構築します。
すると、tagging-rare.phpというファイル名で、
以下のような文字列のファイルができあがります。
・
・
・
TrueSleeper:1:2006-01-12:TrueSleeper
TVドラマ:1:2006-02-06:TV%E3%83%89%E3%83%A9%E3%83%9E
TV版:5:2006-02-06:TV%E7%89%88
TypeKey:1:2006-01-07:TypeKey
TypeR:6:2006-01-15:TypeR
Tシャツ:2:2005-03-23:T%E3%82%B7%E3%83%A3%E3%83%84
t属性:1:2005-04-19:t%E5%B1%9E%E6%80%A7
UFOキャッチャー:2:2006-01-23:UFO%E3%82%AD%E3%83%A3%E3%83%83%E3%83%81%E3%83%A3%E3%83%BC
・
・
・
並びとしては、
となります。
続いて、実際に表示するためのテンプレートを作成します。
・テンプレート名・・・「TAGGING-PHP」(任意)
・出力ファイル名・・・「tagging-php.php」(任意)
・テンプレートの内容
<style type="text/css">
#tags {
border: 1px solid #CCC;
padding: 10px;
margin: 10px;
text-decoration: none;
}
#tags a {
border-width: 0; color: #000;
text-decoration: none;
}
#tags a:active, #tags a:hover {
color: #6C3;
text-decoration: none;
}
#tags .hot a { color: #0000ff; }
#tags .old a { color: #444444; }
#tags .oldest a { color: #b0b0b0;}
</style>
<div id="tags">
<?php
$now = time();
$arr = file("tagging-rare.php");
foreach ($arr as $line) {
$tagline = split(":",$line);
$px = (int)($tagline[1] / 3 + 12);
$lh = (int)($tagline[1] / 2 + 100);
$def = $now - strtotime($tagline[2]) ;
if ($def <= 432000 ) {
$def_tag = "hot";
} elseif ($def > 31536000) {
$def_tag = "oldest";
} else {
$def_tag = "old";
}
$style = "font-size:".$px."px; ". "line-height:" . $lh . "%";
$out = "<span class=\"" .$def_tag . "\" style=\"" . $style . "\">" ;
$out .= "<a target=\"_blank\" href=\"<$MTCGIPath$>mt-xsearch.cgi?blog_id=<$MTBlogID$>&delimiter=,&search_key=Tagwire&search=" . $tagline[3] . "\">" . $tagline[0] . "</a>";
$out .= "</span>\n";
echo $out;
}
?>
</div>
青文字は、フォントサイズ、行間ですので、
適宜調整してください。
では、実際にできあがったもので比較してください。
(追記参照)
「オリジナル」 → TAG of 'Project Multiburst'
「PHPでのTAGGING」 → TAG of 'Project Multiburst' with PHP
といった感じです。
現在、いちを「バージョン1.00」としています。
-----------------------
2006/10/10 追記
MT3.3になったことで、ネイティブなタギングに移行しました。
Link HTML:
トラックバックURL: