del.icio.us の自分のブックマークに関するリストを、このブログでもナビゲーションの下の方に表示していますが、これは先日まで javascript を使って表示していました。それは del.icio.us の Help でやり方が公開されていた からなのですが、やはりちょっとページが重くなっていました。軽量化を図るため、Movable Type に静的に書き出させようとプラグインを探したのですが、うまいこと思ったものが見つからないので作りました。JSON をもとに del.icio.us のブックマーク情報を出力するための DeliciousJSON プラグインです。
取得した JSON をもとにブックマークに関する情報を出力するタグが追加されます。出力できる情報は、ブックマークする際に入力する URL, Description, Notes, Tags 欄の情報です。
Movable Type ver. 3.35 以降。現時点での最新版 ver. 4.1 でも動作確認していますが、ver. 2 系統での動作確認は行なっていません(たぶん動くと思うのですが)。
通常のプラグインと同様に、解凍してできた DeliciousJSON フォルダを plugins ディレクトリ内にそのままアップロードしてください。正しくアップロードできていれば、システム・メニューのプラグイン設定に DeliciousJSON プラグインが表示されます。
MT 3 系の場合
MT 4 系の場合
del.icio.us のブックマーク情報を順番に出力するためのブロックタグ(コンテナタグ)です。新しいものから順に出力されます。アトリビュート user でユーザ名を指定し、アトリビュート count で出力する数を指定(100 まで)します。アトリビュート user は必須です。
また、アトリビュート tag を指定することで、タグによる絞り込みを行うことができます。複数のタグを指定する場合は、「+」でつないでください。例えば、「Movable Type」と「Plugins」がついたブックマークを出力したい場合は、tag="Movable Type+Plugins" となります。これらは AND 条件として評価されます。
ブロックタグ(コンテナタグ)です。MTDeliciousInfoHeader タグで囲んだ内容は、MTDeliciousInfo ブロックタグ(コンテナタグ)のループの一回目のみ処理が行われます。
ブロックタグ(コンテナタグ)です。MTDeliciousInfoFooter タグで囲んだ内容は、MTDeliciousInfo ブロックタグ(コンテナタグ)のループの最後でのみ処理が行われます。
MTDeliciousInfo ブロックタグの中で動作するファンクションタグです。MTDeliciousInfo ブロックタグで指定した user アトリビュートや tag アトリビュートをもとに、それらの条件に合うブックマークの数を出力します。MTIfNonZero と組み合わせるとよいでしょう。
MTDeliciousInfo ブロックタグの中で動作するファンクションタグです。そのブックマークの URL を出力します。アトリビュート cut をつけると、ドキュメントルートの URL を出力します(http://weeeblog.net/logs/index.php をブックマークしていた場合は、http://weeeblog.net/ を出力します)。これは favicon の取得などに使うとよいでしょう。
MTDeliciousInfo ブロックタグの中で動作するファンクションタグです。ページをブックマークするときに入力した description の内容を出力します。おおよその場合は、これはページタイトルでしょう。
MTDeliciousInfo ブロックタグの中で動作するファンクションタグです。ページをブックマークするときに入力した notes の内容を出力します。
MTDeliciousInfo ブロックタグの中で動作し、そのブックマークのタグを出力するためのブロックタグです。アトリビュート glue で、区切り文字を指定できます。
MTDeliciousTags ブロックタグの中で動作するファンクションタグです。そのブックマークにつけられたタグを出力します。
例えば、タグ「Movable Type」とタグ「Plugins」がつけられたブックマークを favicon とともに表示する場合は、以下のようにすればよいでしょう。MTIfNonZero と MTDeliciousInfoHeader, MTDeliciousInfoFooter を組み合わせることで、無駄な HTML タグが出力されないようにすることができます。
<MTDeliciousInfo count="5" tag="Movable Type+Plugins" user="okayama">
<MTIfNonZero tag="MTDeliciousCount">
<MTDeliciousInfoHeader>
<dl>
</MTDeliciousInfoHeader>
<dt><a href="<$MTDeliciousURL$>"><img src="<$MTDeliciousURL cut="1"$>favicon.ico" alt="" width="16" height="16" /><$MTDeliciousDescription$></a></dt>
<dd><$MTDeliciousNotes$></dd>
<dd>tag: <MTDeliciousTags glue=","><a href="http://del.icio.us/tag/<$MTDeliciousTag$>"><$MTDeliciousTag$></a></MTDeliciousTags></dd>
<MTDeliciousInfoFooter>
</dl>
</MTDeliciousInfoFooter>
</MTIfNonZero>
</MTDeliciousInfo>
MTDeliciousInfo ブロックタグに user アトリビュートをつけないと何も出力されません。まじで何も出力しません。
また、MTDeliciousInfo が呼び出されるたびに JSON を取得しにいくことになるので、あまりにもその回数が多いと嫌がられるかもしれません。問題があれば、javascript でアクセスがあった場合のみ表示させた方がよいかもしれませんが、公式サイトの Help に記載されているやり方 は、おそらく Mac IE では動かないでしょう。
あと、user アトリビュートで指定すれば誰のブックマークでも表示できることがちょっと気になっているのですが、公式サイトのヘルプでその方法が書かれているので、まあいいのかなと思っています。わるいことにはつかわんといてね
api を使いたかったのですが、https での提供だったので、手軽に利用できる JSON を使いました。JSON 取り扱いの勉強もかねて。Movable Type に Net::SSLeay が標準バンドルされるようになったら、api 利用版も作るかもしれませんが、今のところは特に需要がない限り、追加モジュールが必要なプラグインを書くつもりはありません。
基本的にご利用は無償かつ自己責任ですが、継続的な開発、更新のため、よろしければドネーションをご検討ください。以下のボタンから、PayPal を通じて行うことができます。
また、フィードバックもぜひ kenmin.okayama@gmail.com までお送りください。コメントでもかまいません。
Comments