blosxomのプラグインがボクにもできるもん!?
hail2u.net - Weblog - blosxom-plugin-helper と all about blosxom: AboutPlugin を見ていたら、何となく blosxom のプラグインが作れるのではないかという気がしてきました。
いや、作れないですけど。
blosxom のプラグインを作ってみたい人には、とても参考になるのではないでしょうか。
notfoundプラグインを導入
先日導入した find プラグイン(参照)のおかげで、ブログ内検索が、かなり使えるようになりました。もっと早く導入しても、よかったですね。
ところで、find プラグイン検索で、どのエントリにもヒットしなかった場合は、404 Not Found になっていたかと思います。これは、hail2u.net - Weblog - blosxomと404 #2の方法で、存在しないページにアクセスがあったら 404 を返すようにしていたからです(たぶん)。
blosxomは、存在しないページにアクセスがあった場合でも、無理矢理ページをこさえて出力してしまいます。hail2u.net - Weblog - blosxomと404 #2は、これを防ぐための措置です。
このままでもいいかなと思っていたのですが、notfound プラグインを改造して使ってみることにしました。notfound は、hail2u.net - Weblog - blosxomと404 #2と同じことをプラグイン側で実現するものです(適当)。
これを、Extension3 - blosxomのカスタマイズ#6の方法でカスタマイズすれば、find プラグインで検索した場合は、notfound の対象外になります。つまり、検索で何もヒットしなくても 404 を返さず、何か表示されるようになります。
ただ、hail2u.net - Weblog - blosxomと404 #2でも notfound プラグインでも、存在しないカテゴリへのアクセスで無理矢理ページが表示されるケースがあるようです。それは、実際に存在するカテゴリの名前(例: /internet/)と、途中まで一致するところ(例: /int や /i/ など)にアクセスした場合です。
たとえば、
http://niiyan.s8.xrea.com/blosxom/int/
でアクセスしても、
http://niiyan.s8.xrea.com/blosxom/internet/
と同じページが表示されます。
dynamic_cache プラグインを使っている場合、これもキャッシュされてしまいます。
追記: よく考えれば(考えなくても)、notfound プラグインの「Not Found出力を避けるフレーバーの拡張子」で .find (find プラグイン用の flavour )を指定すれば、検索で何もヒットしなくても 404 を返さないようにすることができるのでした(find プラグイン用の flavour を用意しているのなら)。
my $flavour_re = '^(?:wikieditish|find)$';
こんな感じでいいみたいです。
all about blosxom
hail2u.netのkyoさんが、いつのまにやらall about blosxomというblosxom愛なサイトを作っておられたようです。
Wikiで構築されているので、誰でも編集することができます。
というわけで、あいさつがわりに、ユーザーリストの末席にこのブログを追加してきました。ついでに何か送っておきました。
ブログ内検索をfindプラグインに変更
ブログ内検索には長らくGoogleを利用してきましたが、どうもあまりヒットしないようなので、findプラグインに変更することにしました。
foot.flavourのGoogle検索の部分を、「$find::searchform」に置き換えるだけで、簡単に設置することができました。
ただしこのままだと、検索結果のページがデフォルトのflavour(blosxom starter kitだと*.htm)を使って表示されます(たぶん)。ここの場合、story.htmに広告を入れてたりする関係で、Google AdSenseが10個くらい(実際には3個程度で、あとは代替広告が)表示されてしまいました。
広告いっぱいでガッポリもうk・・・じゃなくて、さすがにこれはまずいので、findプラグイン用のflavourを用意して、対応することにしました。ちょうどタイミングよく、findプラグイン #3 - Ck2 Bloggerで改造の仕方を説明されていたので、「$find::results」云々のあたりを参考にさせていただきました。
blosxom starter kitの他のflavourを参考にサンプルのflavourも作ってみたので、一応、こっそり置いておくことにします。foreshortenedプラグインとpagingプラグインを使います。
findプラグインも変更する必要がありますが、すでにfindプラグイン #3 - Ck2 Bloggerで解説されているので、そちらを参考にしてください(他力本願)。
ところで、さっきCk2 Bloggerさんで検索してみたら、findプラグイン #2 - Ck2 Bloggerで、findプラグインのflavourの話が書いてありました。煤け小姫さんのforeshortenedプラグインを使っているところまで一緒でした・・・。
(追記)タイプミスによりエントリの一部の表示がおかしくなっていました。flavourのサンプルのリンクも間違えていたので修正しました。
Deloxom - del.icio.usの最新のブックマークを表示するblosxomプラグイン
Deloxomは、del.icio.us: javascript feeds(参照)と同じように、del.icio.usの最新のブックマークを出力するblosxom用のプラグインです。
私は実際に使ったことはないのですが、話の流れで(?)紹介します。そういうわけで、以下の説明は、あまりあてにはなりません。
設定項目は、次の5項目です。
ユーザー名/パスワード
#you need a del.icio.us account
$delicious_login = 'login';
$delicious_password = 'password';
del.icio.usのユーザー名とパスワードを設定します。
ただし、このままでは、プラグインファイルを直接見られたときに、パスワードが漏れてしまいます。
blosxom starter kitの場合は、deloxomでは
#you need a del.icio.us account
$delicious_login = '$blosxom::deloxom_delicious_login';
$delicious_password = '$blosxom::deloxom_delicious_password';
として、config.cgiの中で
$deloxom_delicious_login = 'login';
$deloxom_delicious_password = 'password';
のように設定すれば大丈夫だと思います(たぶん)。
ブックマークの表示数
#you can show up to 100 links at one time
$num_links_to_show = 15;
表示するブックマークの数を設定します(最大100個)。
タグ/日付の表示
#1 means yes, 0 means no
$show_tags = 1;
$show_dateline = 1;
$show_tagsはタグの表示の有無を、$show_datelineは日付表示の有無を設定します。1なら表示、0なら非表示です。
そのほかの注意することとしては、blosxomの$plugin_state_dirのパーミッションが読み込み/書き込み可能でなければいけないようです。
同じページで、その日のdel.icio.usのブックマークから、blosxomのエントリを作成するPerlスクリプトも公開されています。



