| « MediaWikiを1.5.8から1.6.3にアップグレード | portsツリーから削除されたportは、どこに? » |
b2evolutionをTechnoratiのTagに対応
先日、書いたようにTechnoratiのクローラーは、このブログが配信しているRSS 1.0(RDF)、RSS 2.0もしくはAtomのフィードのカテゴリを汲み、Tag
と認識してくれるようで、必ずしも、アンカーにrel="tag"という属性は必要なかった。
でも、それはたまたま上記フィードのいずれかから解釈してくれたに過ぎず、生成されたHTMLの情報だけでは判断できない。
逐一手動でrel="tag"のアンカーを埋め込んだり、あるいは、それを簡易に入力できる方法もあるようだけど、余分な作業になってしまうし、ともすると、忘れがち。
b2evolutionには、投稿時の必須入力事項として、「メインカテゴリ」を選択しなければなりません。この情報を利用して、rel="tag"のアンカーを自動生成するようにしてみました。
任意入力項目である「付加カテゴリ」については、あえて、切り捨てることにしました。
rel="tag"の仕様では、どちらが「メイン」でどちらが「付加」なのかが判断できない。- あまり、ごちゃごちゃタグをつけたくなかった。
- そもそも、メインカテゴリは、その投稿を分類する上で、最もふさわしいものとして選択されているはず。
- 便宜上、2つのカテゴリにまたがっていて、一つから離れることで支障があるなら、新たなカテゴリを設けて、そこに分類するという手もある。
というのが主な理由です。
アンカーのリンク先は、
http://technorati.com/tags/[Tag Name]
というふうになりますが、このブログでは、カテゴリ名を日本語で表しているものが多く、そのままカテゴリ名を[Tag Name]に流用した場合、問題が起こる可能性もあるので、念のため、URLエンコードすることにします。
そこで、予め、
--- b2evocore/_functions.php.orig Wed Dec 14 04:40:03 2005
+++ b2evocore/_functions.php Tue Apr 11 13:48:03 2006
@@ -131,6 +131,11 @@
$content = str_replace("'", ''', $content );
break;
+ case 'urlencode':
+ // RFC1738
+ $content = rawurlencode($content);
+ break;
+
default:
die( 'Output format ['.$format.'] not supported.' );
}
と本体部分に修正を加えます。
後は、
<?php
echo '<a rel="tag" href="http://technorati.com/tags/',
$Item->main_category('urlenocde'), '"',
' title="Technorati Tag: ',
$Item->main_category('htmlattr'), '">',
$Item->main_category('htmlbody'), '</a>';
?>
などとスキン部分(_main.php)に適宜、追加を加える程度です。
Trackback address for this post
Trackback URL (right click and copy shortcut/link location)
1 comment
のコメント欄にも書いたけど、こっちにも転載。
あら、
また、URLの
?以降のクエリ文字列は取り除かれるので、というはずなのに、Technoratiでは取り除かれてないではないか。
クエリ文字列が取り除かれることを期待して、
language=jaと付けたのに、TagName?language=jaというおかしなタグになってる。うーん・・・
でも、考えてみると、クエリ文字列が取り除かれていないタグが登録されていたのは、
にて、HTMLに埋め込む形にした
rel="tag"の属性を持つアンカーを、問題はあるけども、一応、Tagとして認識してくれたことでもある。
This post has 126 feedbacks awaiting moderation...