2004年10月01日 (金)

ローカル公開などの RSS をちゃんとする

iBlog 1.4.0 で .Mac に公開するぶんには特に大きな問題はなくなりましたが、ローカル公開などの際には [_$DocumentRoot$] や [$DatePublished$] が rss.xml に残ってしまうことがあります。

.Mac ライセンスの iBlog では一旦ローカルに公開して FTP 同期ソフトを利用して FTP サーバにアップしたり、Active Mounter を使って書き込み可能な状態でマウントされた FTP や SFTP サーバのフォルダーに公開したり、Mac をサーバにして自宅サーバ内で公開したりなど、ローカル公開も色々使い道があります。

そこで [_$DocumentRoot$] や [$DatePublished$] が rss.xml に残ってしまうときどうしたらよいかを整理しておきます。


以前も書いたような気がしますが、自分でも探すのが面倒ということは他の人はほとんど見つけられないということですからまあいいでしょう。

[_$DocumentRoot$] 対策

[_$DocumentRoot$] が置き換えられないのはかなり痛いです。例えば私は、普段使っている RSS リーダー(今は FireFox の拡張 Sage を利用しています)で読み取れなかったり、エントリへ辿れないと「あ、なんかメンテ中かな? 間違いでもそのうち気付くだろうから待っていよう。」などと勝手に思って放置しておくことも少なくありません。辿れないとよほど見たい場合を除いて見にいきません。そしてその状態が長く続くと、サイトオーナーに知らせに行くこともありますが、巡回対象から外してしまうこともあります。このように常連読者が離れてしまうこともあります。

FeedPage.txt を書き換えておく方法

rss.xml のテンプレートファイル FeedPage.txt の中にある [_$DocumentRoot$] を予め書き換えておきます。ブログのトップページBlogPageの URL が http://homepage.mac.com/yourname/iblog/index.html の場合には FeedPage.txt の中の全ての [_$DocumentRoot$]http://homepage.mac.com/yourname/iblog に置き換えます。BlogPage の URL から /index.html を取り去ったものに置き換えるのです。[ ] も置き換えて下さい。ときどき勘違いをしている方を見受けます。

この方法はとてもお手軽ですが、次の欠点があります。
  • ブログが一つの場合にしか使えません。
    FeedPage.txt は全てのブログに共通するテンプレートファイルです。このため FeedPage.txt を書き換えると全てのブログに影響を与えます。ここに一つのブログ固有の公開 URL を埋め込むと他のブログの rss.xml にもその URL が書き込まれてしまいます。
  • rss.xml 内の画像などが表示できません。
    iBlog の機能を利用してエントリに貼付けた画像や動画などのファイルは、それが rss.xml 内に書かれるときには、その URL の一部に [_$DocumentRoot$] 用いられます。これはテンプレートファイルにはない記述なのでテンプレートファイルの変更で対応できません。
    しかし、rss.xml に画像を頻繁に載せるのは控えた方が親切です。例えば私は自宅ではナローバンドでインターネット接続しています。せっかく素早く巡回するために RSS を購読しているのに画像が沢山ある RSS を見るとそこでダウンロードが始まって滞ってしまいます。余裕がないときなどは、そういうサイトは文面もタイトルも見ずに次に行ってしまいます。ナローバンドを使わざるを得ない人もまだまだいるんだということを忘れないでほしいです。
ツールを使う方法

一括してテキストの置き換えを行うツールを持っていたらそれが使えます。BlogPage の URL が http://homepage.mac.com/yourname/iblog/index.html の場合には FeedPage.txt の中の全ての [_$DocumentRoot$]http://homepage.mac.com/yourname/iblog に置き換えます。BlogPage の URL から /index.html を取り去ったものに置き換えるのです。

iblogPatcher を使う方法

iblogPatcher は一括してテキストの置き換えを行うツールでもありますから上の記述で十分なのですが、提供元なのでちゃんと書いておきます。

MY_REPLACE.plugin を利用して [_$DocumentRoot$] を置き換えるようにブログ定義ファイルを設定するのです。ブログ定義ファイルのテンプレートを見て下さい。そこに次の箇所があります。
# 独自の REPLACE を定義する
push @{$MY_REPLACE::Conf{'replace'}}, (
...
);
この中に
{
    # ブログのドキュメントルート
    'name'  => '[_$DocumentRoot$]',
    'value'  => '%公開先URL%',
},
という箇所があります。これを採用して下さい。そして %公開先URL% をBlogPage の URL から /index.html を取り去ったものに置き換えておいて下さい。

[$DatePublished$] 対策

多くの RSS リーダーや RSS を利用するサービスはこの [$DatePublished$] がそのままでも内容を読み取ってくれるので気にしないという選択肢もないわけではありません。しかし置き換えられないとシンタックスエラーですから、受け付けてくれないものもあり得ます。そのせいで本当なら読みにきてくれる人たちを失ってしまっているかもしれません。潜在読者をみすみす失っているかもしれません。

FeedPage.txt を書き換えておく方法

FeedPage.txt をよく見ると、[$DatePublished$] が書いてある channel 要素直下の pubdate 要素のすぐ上に lastBuildDate 要素があって、そこに [$DateBuild$] という置き換え項目があります。ここにはプレビューで公開前の rss.xml が作成された日時が入ります。rss.xml の内容が作成された日時というわけです。日時の書式は同じなのです。

この [$DateBuild$] を流用してしまいます。つまり [$DatePublished$] の代わりに [$DateBuild$] を書いておくのです。

注意としてはプレビューしてから公開するまでになるべく間を置かないようにしましょう。本来 [$DatePublished$] は公開された日時が入るところを内容が生成された日時でまかなっているのですから、違う値です。あまり実際と違うのはもしかすると誰かに迷惑かもしれないですからね。

iblogPatcher を使う方法

これは従来の GenPubRSS.plugin を利用することを指しています。今までと使い方は同じなので説明は省きます。

[_$DocumentRoot$] が置き換えられてこの [$DatePublished$] だけが置き換えられないケースでは、せっかく publish after の処理の半分が必要なくなったのに悔しいことと思います。悔しさと publish after をする手間とを天秤にかけて悔しさが勝つ人は上の FeedPage.txt を書き換えておく方法 を行いましょう。


Posted: 11:34    | Comment | Trackback


以下、類似エントリです。