Movable Type

Movable Type News

Movable Type 3.x デフォルト・テンプレートのAtomフィードの不具合について

Movable Type 3.0以降にデフォルト・テンプレートとして含まれている、atom.xmlを生成するテンプレートをそのまま利用していると、2007年に入ってから再構築したときに内容が変わってしまい、ブログの購読者(あなたのブログのAtomフィードを購読している読者)の側で、未読ではない記事が未読として表示されてしまうなどの軽微な問題が起こる可能性があります。どのような問題が起こるか(あるいは起こらないか)は、購読者側のツールによる部分も多く、厳密には特定できていません。以下を参考に、修正をお願いします。

Movable Type 3.0以降にデフォルト・テンプレートとして含まれている、atom.xmlを生成するテンプレートの中に、以下の記述があります。

<id>tag:<$MTBlogHost exclude_port="1" encode_xml="1"$>,<$MTDate format="%Y"$>:<$MTBlogRelativeURL encode_xml="1"$>/<$MTBlogID$></id>

この記述は、ブログのホスト名、再構築時の年、ブログの相対URL、ブログのIDに依存しており、これらのいずれかが変更されると値が変わってしまい、ユニークなIDとしての役目を果たしません。特に、年をまたぐと、ブログの管理者自身は何も変更していないにもかかわらず、IDが変わってしまうことになります。

各ブログのテンプレート一覧から「Atom」を選択し、上記の<id>タグを探し、中身を次のように修正します。

<id>tag:<$MTBlogHost exclude_port="1" encode_xml="1"$>,2006:<$MTBlogRelativeURL encode_xml="1"$>/<$MTBlogID$></id>

今年に入って購読をしているブログの購読者は、2005年以前からブログを購読していたとしても、すでに2006という数値を持つIDをリーダーに登録しているため、2006と書いてしまっても問題ありません。[1] また、来年購読を始める読者に2006という数値を渡しても、これはIDの一部を成す記号に過ぎないので、問題はありません。

#movabletype-jaチャンネルでこの問題を指摘してくださったdrryさんに感謝します。drryさんのブログでもこの問題が丁寧に解説されています。ありがとうございます。

AtomのID要素についての詳細は、Atom Syndication Format仕様を参照してください。

[1]

厳密には、この1年で1度でも再構築を行い、かつそれを読者がリーダーソフトウェアで読み込んでいた場合、ですが、ほとんどのブログはこの条件を満たすと思われます。

ドキュメントやユーザー向けの情報はこちら

Movable Type のくわしい使い方や、タグリファレンス、開発者向けのドキュメントなどは、MovableType.jp で公開しています。プラグインやテーマは、プラグインディレクトリをご覧ください。

movabletype.jp
page top