pplog には RSS 配信機能がある(左の Main menu 内)。
試してみたところ、RSS の機能としては致命的な点が一つあった。記事の更新日時が表示されない。
様々な RSS を受信していると、配信日時がこちらからリクエストした時間と同じ時間になっているサイトがあることに気がつく。(同じ記事が複数回取得されたりする)
pplog もそうらしい。
RSS の仕組みを調べたところ、出力に時刻が入っていないため、自動的にリクエストされた時刻が適用されているらしい。
pubDate タグを設定すれば通りそうなので、各エントリに埋め込まれている時刻データを流用しようと思ったけれど、RSS 用のフォーマットになってない。
仕方ないのでエントリごとに RSS 用のデータを持たせることにした。
配列の finalEntries に各データが格納されるようなので、その最後に RSS 用データが来るようにする。
RSS 用時刻文字列取得用の関数を定義
コード: 全て選択
sub get_rssDate
{
my ($week, $month, $day, $time, $year) = split /\s+/, scalar(localtime());
return $week.', '.$day.' '.$month.' '.$year.' '.$time.' +0900';
}
802行目近辺の
コード: 全て選択
print FILE $title.'"'.$content.'"'.$date.'"'.$category.'"'.$i;
の最後のセミコロンの前に
コード: 全て選択
.'"'.get_rssDate()
を付け足す。
1076行目近辺の
コード: 全て選択
print FILE $title.'"'.$content.'"'.$date.'"'.$category.'"'.$fileName;
にも同様に付け足す。
355行目付近の RSS タグ生成過程(<category>タグと<description>タグの間とか)に
コード: 全て選択
<pubDate>'.$finalEntries[5].'</pubDate>
を付け足す。
で、ついでだから <lastBuildDate> タグも作りたいので、
328行目付近の
の後に
コード: 全て選択
my @hoge_entries = split(/"/, $entries[0]);
を付け足し、
コード: 全て選択
<description>'.$config_metaDescription.'</description>
の次の行に
コード: 全て選択
<lastBuildDate>'.$hoge_entries[5].'</lastBuildDate>
を書いておく。
これで RSS が更新時刻通りに取得できるようになった。