Home > Logs > March 2008 > This Entry
JSON をもとに del.icio.us のブックマーク情報を出力する DeliciousJSON プラグイン
del.icio.us の自分のブックマークに関するリストを、このブログでもナビゲーションの下の方に表示していますが、これは先日まで javascript を使って表示していました。それは del.icio.us の Help でやり方が公開されていた からなのですが、やはりちょっとページが重くなっていました。軽量化を図るため、MovableType に静的に書き出させようとプラグインを探したのですが、うまいこと思ったものが見つからないので作りました。JSON をもとに del.icio.us のブックマーク情報を出力するための DeliciousJSON プラグインです。
動作
取得した JSON をもとにブックマークに関する情報を出力するタグが追加されます。出力できる情報は、ブックマークする際に入力する URL, Description, Notes, Tags 欄の情報です。
動作環境
MovableType ver. 3.35 以降。現時点での最新版 ver. 4.1 でも動作確認していますが、ver. 2 系統での動作確認は行なっていません(たぶん動くと思うのですが)。
ダウンロード
インストール
通常のプラグインと同様に、解凍してできた DeliciousJSON フォルダを plugins ディレクトリ内にそのままアップロードしてください。正しくアップロードできていれば、システム・メニューのプラグイン設定に DeliciousJSON プラグインが表示されます。
MT 3 系の場合
MT 4 系の場合
使用できるタグ
MTDeliciousInfo
del.icio.us のブックマーク情報を順番に出力するためのブロックタグ(コンテナタグ)です。新しいものから順に出力されます。アトリビュート user でユーザ名を指定し、アトリビュート count で出力する数を指定(100 まで)します。アトリビュート user は必須です。
また、アトリビュート tag を指定することで、タグによる絞り込みを行うことができます。複数のタグを指定する場合は、「+」でつないでください。例えば、「MovableType」と「Plugins」がついたブックマークを出力したい場合は、tag="MovableType+Plugins" となります。これらは AND 条件として評価されます。
MTDeliciousInfoHeader
ブロックタグ(コンテナタグ)です。MTDeliciousInfoHeader タグで囲んだ内容は、MTDeliciousInfo ブロックタグ(コンテナタグ)のループの一回目のみ処理が行われます。
MTDeliciousInfoFooter
ブロックタグ(コンテナタグ)です。MTDeliciousInfoFooter タグで囲んだ内容は、MTDeliciousInfo ブロックタグ(コンテナタグ)のループの最後でのみ処理が行われます。
DeliciousCount
MTDeliciousInfo ブロックタグの中で動作するファンクションタグです。MTDeliciousInfo ブロックタグで指定した user アトリビュートや tag アトリビュートをもとに、それらの条件に合うブックマークの数を出力します。MTIfNonZero と組み合わせるとよいでしょう。
MTDeliciousURL
MTDeliciousInfo ブロックタグの中で動作するファンクションタグです。そのブックマークの URL を出力します。アトリビュート cut をつけると、ドキュメントルートの URL を出力します(http://weeeblog.net/logs/index.php をブックマークしていた場合は、http://weeeblog.net/ を出力します)。これは favicon の取得などに使うとよいでしょう。
MTDeliciousDescription
MTDeliciousInfo ブロックタグの中で動作するファンクションタグです。ページをブックマークするときに入力した description の内容を出力します。おおよその場合は、これはページタイトルでしょう。
MTDeliciousNotes
MTDeliciousInfo ブロックタグの中で動作するファンクションタグです。ページをブックマークするときに入力した notes の内容を出力します。
MTDeliciousTags
MTDeliciousInfo ブロックタグの中で動作し、そのブックマークのタグを出力するためのブロックタグです。アトリビュート glue で、区切り文字を指定できます。
MTDeliciousTag
MTDeliciousTags ブロックタグの中で動作するファンクションタグです。そのブックマークにつけられたタグを出力します。
使用例
例えば、タグ「MovableType」とタグ「Plugins」がつけられたブックマークを favicon とともに表示する場合は、以下のようにすればよいでしょう。MTIfNonZero と MTDeliciousInfoHeader, MTDeliciousInfoFooter を組み合わせることで、無駄な HTML タグが出力されないようにすることができます。
<MTDeliciousInfo count="5" tag="MovableType+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 取り扱いの勉強もかねて。MovableType に Net::SSLeay が標準バンドルされるようになったら、api 利用版も作るかもしれませんが、今のところは特に需要がない限り、追加モジュールが必要なプラグインを書くつもりはありません。あと、休日にまでプラグインを書いている僕を笑うなら笑ってください。笑ったからといって使っちゃダメとかいいません。
使用にあたってとか修正依頼とかダメ出しとか人生相談とか
基本的にご利用は無償かつ自己責任ですが、継続的な開発、更新のため、よろしければドネーションをご検討ください。以下のボタンから、PayPal を通じて行うことができます。
また、フィードバックいただけるとうれしいです。ぜひ weeeblog@gmail.com までお送りください。コメントやトラックバックでもかまいません。人生相談は20代の女性に限りますが、それ以外は応相談(※フィードバックは女性でなくともかまいませんが、いずれにしてもいまだにいただいたことはありません)。
Comments