2004年04月15日 (木)

iBlog 1.3.6 を使うには

kaoru_ari さんが丁寧にエントリを書いているので基本はそちらを見てください。私が付けたコメントの CommonLib.js も部分も含みます。ここではそれらの補足をしておきます。
[追記]うげぇー文字化けしてしまいました。済みません。

補足内容は次のとおりです。
  • RSS Feed を適切にする
  • エントリ一覧の文字化けを解消する

RSS Feed を適切にする

RSS Feed に関する問題点としては次があるようです。

  1. [$DocumentRoot$]の置き換えが公開時に行われない
  2. channel 要素の pubDate 要素の中の公開日時の書式が正しくない

私は直接試していません(そのまえに 1.3.5 に戻した)が、1 は随所で報告されているので確実でしょう。2 はまだ 1.3.6 を RSS にまで十分に使っているサイトを見かけていないので推測です。

[$DocumentRoot$]対策

t0mori さんがこれについてエントリ「続・iBlog 1.3.5 LatestBuild 040330」で既に書いています。iblogPatcher を使用されていない方はこの方法がよいでしょう。ただ、複数の blog を運営している方はこの方法では対応できないので、別解を書いておきます。

これは MY_REPLACE.plugin を使用するのが最も適切です。MY_REPLACE.plugin そのもについてはエントリ「独自 REPLACE を定義するプラグイン」を御覧下さい。

そのエントリにある blog 固有の REPLACE の定義方法 を使って[$DocumentRoot$]という REPLACE を作ってしまうのです。blog 定義ファイルに追加する内容は次のようになります。

# 独自の REPLACE を定義する
push @{$MY_REPLACE::Conf{'replace'}}, (
    {
        'name'      => '[$DocumentRoot$]',
        'value'     => 'あなたの blog のベース URL',
        'context'   => undef,
    },
);
注意) [ ] は全角で書いてあります。半角に置き換えて使用してください。

ここで あなたの blog のベース URL は blog のトップページの URL を http://your.server/path/index.html だとすると http://your.server/path とします。この blog でしたら http://homepage.mac.com/yuji_okamura/iblog/DotMac/Tips になります。

pubDate 対策

これは CHANGE_CONTENT.plugin と CHANGE_ENCODE.plugin を使用します。ただし、CHANGE_ENCODE.plugin は直接は使いません。そこに含まれている機能を流用します。

CHANGE_CONTENT.plugin のデフォルト設定 %Conf の FeedPage の設定の中に次の設定を追加します。ファイルバージョン v 1.10 のオリジナルでしたら 136 行目と 137 行目の間にです。

{
    'condition' => '<pubDate>((?:[^<]|<(?!¥/pubDate >))*)<¥/pubDate>',
    'replace'   => '"<pubDate>".CHANGE_ENCODE::DateTimeRFC2822()."<¥/pubDate>"',
    'option'    => 'e',
},

エントリ一覧の文字化けを解消する

iBlog 1.3.6 では UTF-8 で日本語が出力されるので、エントリ一覧のデータを保持している entries.js も UTF-8 になっています。一方で、それ以前の iBlog の日本語の基本が Shift_JIS だったためエントリ一覧のページである ListEntry.html, ListEntryPCom.html, ListEntryNoHalo.html は Shift_JIS で書かれています。このためエンコードがちぐはぐになって文字化けを起こしているのです。

ですから Shift_JIS で書かれた html ファイルを UTF-8 にしてやればよいのです。手順はこうなります。

  1. UTF-8 で保存できるテキストエディタで使用しているエントリ一覧用の html ファイルを開く。
  2. 最初の方に二箇所ある Shift_JIS と書かれたところを UTF-8 にする。
  3. そのファイルを UTF-8 で保存する。

実は昨日一旦やったのですが、日本語環境で文字化けになる blog 名、カテゴリ名についても解決方法があります。ちょっとしたものなのですが、これは設定の範疇ではなく SJIS_BNAME.plugin の変更になります。あとは、iBlog が内部動作で出力する XHTML コードに変更があった箇所に合わせて VALID_XHTML.plugin などを微調節すれば一通り UTF-8 の blog サイトが出来上がります。

そうなのです。iBlog 1.3.6 は iblogPatcher があれば使えるバージョンなのです。そうだとすると、なぜ私がそうであるにも拘らず 1.3.5 に退行したかが不思議に思えるかもしれません。これは昨日のエントリの繰り返しになってしまいますが、

  • テンプレートセットの中のテンプレートファイルに日本語を使うと文字化けする。
  • blog の説明に & < " > を使うと RSS や XHTML が崩れる。
    特に <$BlogDescription$> がどのテンプレートでも使えるようになったということは、使う場所によっては致命的になって、正しく表示できなくなるでしょう。

という理由からです。後者は & < " > を使わなければ済みますが、前者は即座にできる対応方法がないのです。そしてそういう表現上の制約を受けないために iblogPatcher を活用しているからです。仕事が一段落して時間ができたら 1.3.6 完全対応の iblogPatcher プラグインを作りますので、しばらくお待ち下さい。5 月になったら時間がとれそうです。


Posted: 06:29    | Comment | Trackback


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