トラックバックは tb-standalone を使っているのですが、cron で動かす
タイプのスクリプトを作って「最近トラックバックを頂いた記事のリスト」
を JavaScript ファイルとして出すようにしました(くっつき手法です)。
こういう場合は、CGIをハックするのが正統派ですし、そもそも誰かがきっ
とやっているはずなのですが、なんか面倒なのでくっつきシリーズのソー
スをテンプレートにして、クイックなげやり。
ソース: recent_tb.pl
これ、ちょっと変えたらくっつきBBSにそのまま使えることに気づいたの
で「最近コメントを頂いた記事のリスト」も出すようにしました。
ソース: recent_cm.pl
(パッチを載せようと思ったら、ソースそのままの方が短かった)
こんな感じになりました:
なお、ソースは「無償・無保証・著作権放棄」 です。
さりげにシュウォーツ変換[2003-07-11-2]を使っているのがポイント。
(てなことはだまっておくべき)
ref.
- くっつきシリーズ
<http://ta2o.net/tools/index.html#kuttuki>
- くっつき BBS
<http://ta2o.net/tools/kuttukibbs/>
- 技術文書:くっつきトラックバック
<http://ta2o.net/doc/tech/kuttuki-trackback.html>
- サイドバーに最近のトラックバックを表示する (MovableType)
<http://www.movabletype.jp/developers/cheebow/archives/2004/08/
post_4.html>
タイプのスクリプトを作って「最近トラックバックを頂いた記事のリスト」
を JavaScript ファイルとして出すようにしました(くっつき手法です)。
こういう場合は、CGIをハックするのが正統派ですし、そもそも誰かがきっ
とやっているはずなのですが、なんか面倒なのでくっつきシリーズのソー
スをテンプレートにして、クイックなげやり。
ソース: recent_tb.pl
以下のような記述を .crontab に追加。#!/usr/bin/perl use strict; use Getopt::Long; $Getopt::Long::autoabbrev = 1; my %opt = (); GetOptions(\%opt, "number=s", "output=s"); my $number = $opt{'number'} || 5; my $output_fn = $opt{'output'} || "a.js"; my $now = time; my $dirname = shift; my @tb_sorted = sort {$b->[1] <=> $a->[1]} map { [$_, (stat $_)[9]] } <$dirname/2*.stor>; my $str; for (0..($number - 1)) { my $e = int(($now - $tb_sorted[$_][1]) / 3600); my $m = ($e < 24) ? $e."H" : int($e/24)."D"; my ($id) = ($tb_sorted[$_][0] =~ m!/(\d+).stor!); $id =~ s/^(\d{4})(\d\d)(\d\d)/$1-$2-$3/; $id =~ s/-(\d\d)(\d+)$/-$1-$2/; $str .= qq{document.writeln('- <a href="$id.html">$id</a> ($m)<br>');\n}; } open(F, "> $output_fn") or die "Can't open $output_fn : $!\n"; print F "$str\n"; close(F);
HTMLファイル(chalow なら cl.conf のテンプレート)にこんなの追加。0 * * * * /home/yto/www/clog/tb/recent_tb.pl /home/yto/www/clog/\ tb/tb_data -n 5 -o /home/yto/www/var/tb.js
<script language="JavaScript" src="http://nais.to/~yto/var/tb.js"> </script>
これ、ちょっと変えたらくっつきBBSにそのまま使えることに気づいたの
で「最近コメントを頂いた記事のリスト」も出すようにしました。
ソース: recent_cm.pl
(パッチを載せようと思ったら、ソースそのままの方が短かった)
以下のような記述を .crontab に追加。#!/usr/bin/perl use strict; use Getopt::Long; $Getopt::Long::autoabbrev = 1; my %opt = (); GetOptions(\%opt, "number=s", "output=s"); my $number = $opt{'number'} || 5; my $output_fn = $opt{'output'} || "a.js"; my $now = time; my $dirname = shift; my @tb_sorted = sort {$b->[1] <=> $a->[1]} map { [$_, (stat $_)[9]] } <$dirname/*.js>; my $str; for (0..($number - 1)) { my $e = int(($now - $tb_sorted[$_][1]) / 3600); my $m = ($e < 24) ? $e."H" : int($e/24)."D"; my ($id) = ($tb_sorted[$_][0] =~ m!/([\d-]+).js!); $str .= qq{document.writeln('- <a href="$id.html">$id</a> ($m)<br>');\n}; } open(F, "> $output_fn") or die "Can't open $output_fn : $!\n"; print F "$str\n"; close(F);
HTMLファイル(chalow なら cl.conf のテンプレート)にこんなの追加。0 * * * * /home/yto/www/clog/kblog/recent_cm.pl /home/yto/www/clog/\ kblog -n 5 -o /home/yto/www/var/cm.js
<script language="JavaScript" src="http://nais.to/~yto/var/cm.js"> </script>
こんな感じになりました:
なお、ソースは「無償・無保証・著作権放棄」 です。
さりげにシュウォーツ変換[2003-07-11-2]を使っているのがポイント。
(てなことはだまっておくべき)
ref.
- くっつきシリーズ
<http://ta2o.net/tools/index.html#kuttuki>
- くっつき BBS
<http://ta2o.net/tools/kuttukibbs/>
- 技術文書:くっつきトラックバック
<http://ta2o.net/doc/tech/kuttuki-trackback.html>
- サイドバーに最近のトラックバックを表示する (MovableType)
<http://www.movabletype.jp/developers/cheebow/archives/2004/08/
post_4.html>