chalowでChangeLogのエントリを書いた時間をRSSフィードに反映するhack
chalowユーザの方以外には通じない話題ですが、
chalowが出力するRSSフィードは、午前1時に書いたエントリでも、
午後18時に書いたエントリでも、
普通は無条件で23:59:59に書かれたことになります。
23:59:59という時間がエントリを書いた時間と一致しないために、
何とかならないか、と思った人もいると思います。
ということでchalow hack。すごく簡単ですが。
はじめに、エントリの記述時刻をChangeLogに書くときのルールや実装方針を
決めました。たつをさんに相談しました。
これなら、普段のChangeLogを書いていている流れで時間が書けそうです。
では、ChangeLogReader.pmとchalowを書き換えます。
+の文字が先頭についている行を新たに書いています。
上手いこと挿入してください。
-の文字が先頭についている行は消すか、コメントアウトしてください。
・ChangeLogReader.pmのstore_itemサブルーチン
$entp->{curid}++;
+
+###
+# write time for rss feed & item pages
+###
+my $writetime;
+if ($ih =~ s|\[\s*(\d\d:\d\d)\s*\]\s*:\s*$|:|) {
+ $writetime = $1.":59";
+}
+elsif($ih =~ s|\[\s*(\d\d:\d\d:\d\d)\s*\]\s*:\s*$|:|) {
+ $writetime = $1;
+}
+ $entp->{$entp->{curid}}{wt} = $writetime;
+
# Processing item header
ChangeLogReader.pmを書き換えたので、
ChangeLogに書いたエントリの記述時刻をRSSフィードや、
アイテムページ(パーマリンクページ)に対して反映できます。
RSSフィードへ反映するには、以下のように書き換えます。
・chalowのwrite_rss_fileサブルーチン
-my $item_dcdate = # ($dcdate =~ /^$ymd/) ? $dcdate :
- $ymd."T23:59:59+09:00";
+my $item_dcdate;
+if ($e->{$i}{wt}){
+ $item_dcdate = $ymd."T".$e->{$i}{wt}."+09:00";
+}
+else{
+ $item_dcdate = $ymd."T23:59:59+09:00";
+}
アイテムページに記述時間を反映したい場合は、
write_item_pageサブルーチンを以下のように書き換えて、
アイテムページのテンプレートに「<TMPL_VAR name=write_time>」と
書けば良いでしょう。
他のテンプレートは、make_item_htmlサブルーチンを書き換えて、
アイテムのテンプレートに「<TMPL_VAR name=write_time>」を書けば
記述時間を反映できます。
・chalowのwrite_item_pageサブルーチン
my $ymdi = "$ymd-$i";
+
+my $writetime;
+unless($ent->{$i}{wt}){$writetime = '23:59:59';}
+else{$writetime = $ent->{$i}{wt};}
と
$t->param(url => $item_url); # 2001-01-01-1.html +$t->param(write_time => $writetime); #hh:mm:59 or hh:mm:ss my $ostr = $t->output();
・chalowのmake_item_htmlサブルーチン
(my $item_id = $ymd.$i) =~ s/-//g; # Ex. "200309241"
+
+my $writetime;
+unless($e->{$i}{wt}){$writetime = '23:59:59'}
+else{$writetime = $e->{$i}{wt};}
+
### item の組み上げ
と
$t->param(url => $item_url); +$t->param(write_time => $writetime); #23:25 my $this_item = $t->output();
以上です。
これで、「chalowの出力するエントリは、エントリの記述時刻と
RSSフィードの時刻がズレている」と言われなくなりますね。
実は1年前から気になっていたのでスッキリしました。
投稿者:としのり 日時:23:24:59 | コメント | トラックバック() |

