Movable Type 4.2:カテゴリー名にタグを入れると、Atomで出力エラーがおきる
2009年1月16日 23:16
Movable Type 3.3から、Movable Type 4.1にアップグレードして以降、atom.xmlが読めなくなり、更新が11ヶ月止まっていた(恥)
昨年春頃、ブログをRSSで読まれている方から、「atom.xmlが読めません」と、ご指摘があった。特にその時は何をしたというわけでもないので、どうやらMT3.3から、MT4.1にアップグレードしてから、読めなくなったようだ。
ということで、あれこれ修正を試みたのだが、atom.xmlをオリジナルに戻しても駄目で、原因がさっぱりわからず、index.xmlを購読していただくように、問い合わせのあった方には個別に返答をしていた。
かように、あきらめモードでいたのだが、年末にlivedoor Readerでatom.xmlを購読されている方から、「登録の購読者数が多いので、もったいないな~ 」と、ご指摘があり、実際にlivedoor Readerを確認すると、購読者数が195件もある上に、表示画面が11ヶ月前で止まっており、これはいけないと、真剣に対策に取り組むことにした。
同じ現象で悩んでいる方もいるかもしれないので、以下に、原因と対策を記載したい。
■エラーの原因
Internet Exploreのエラー表示を確認して、ようやく、これが原因らしいということがわかった。
#エラーはきちんと読みましょう(恥)
文字 '< ' は、属性値内に使用できません。リソース 'http://www.dakiny.com/atom.xml' の実行エラーです。ライン 25、位置 25
該当するソースを確認すると
<category term="<![CDATA[<010>Movable Type]]>" scheme="http://www.sixapart.com/ns/types#category" /&g...
atom.xmlが読めなかったのは、カテゴリー名の前に入れた<001>等のタグが原因だった。MT3.3までは問題が起きていなかっただけに、原因がわからなかったのだ。
■修正前の状態

Movable Typeでは、標準機能では、カテゴリーの順番を決めることができない。
そこで、カテゴリー名に<010>とか順番を入れてあげて、順位を表示していたのだが、MT3.3までは問題がおこらなかった、このハックも、MT4.1(おそらくMT4.0以降)にアップグレードした時点で、Atomの出力で問題が出たのだな。MT3.3以前では問題がなかったので、まったく気づかなかった。
ついでに言えば、MT3.17から、このブログを利用しており、名前に<010>等の数字を入れて表示順を決めていた関係で、「カテゴリーの説明」 をカテゴリー名表示にしていた。
MT3.3以前は、テンプレート以外の管理画面にHTMLタグを入れていても問題は生じなかったのだ。
◇ソース
<!-- カテゴリー --> <MTIfArchiveTypeEnabled archive_type="Category"> <h2>Categories</h2> <div class="em2"> <MTTopLevelCategories sort_method="SortCatFld::Sort"> <MTSubCatIsFirst> <ul> </MTSubCatIsFirst> <MTIfNonZero tag="MTCategoryCount"> <li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel> (<$MTCategoryCount$>)</a> <MTElse> <li><MTCategoryDescription> </MTElse> </MTIfNonZero> <MTSubCatsRecurse> </li> <MTSubCatIsLast> </ul> </MTSubCatIsLast> </MTTopLevelCategories> </div> </MTIfArchiveTypeEnabled>
■修正後の状態

ひとまず、表示順は無視して、atom.xmlの出力を試みる。
<010>等のタグで挟んだ数字をすべて削除して、「カテゴリーの説明」も別の用途で利用したいので、出力表示も「カテゴリーの名前」が表示されるように修正した。
◇ソース
<!-- カテゴリー --> <MTIfArchiveTypeEnabled archive_type="Category"> <h2>Categories</h2> <div class="em2"> <MTTopLevelCategories sort_method="SortCatFld::Sort"> <MTSubCatIsFirst> <ul> </MTSubCatIsFirst> <MTIfNonZero tag="MTCategoryCount"> <li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryLabel$>"><MTCategoryLabel> (<$MTCategoryCount$>)</a> <MTElse> <li><MTCategoryLabel> </MTElse> </MTIfNonZero> <MTSubCatsRecurse> </li> <MTSubCatIsLast> </ul> </MTSubCatIsLast> </MTTopLevelCategories> </div> </MTIfArchiveTypeEnabled>
と修正した後、オリジナルのMovable Type 4.23から atom.xmlをコピー&ペーストし、再構築して、完了。
※壊れたままのatom.xmlを再構築しても、エラーが出ることに変わらないので、オリジナルのatom.xmlに入れ替えること
■表示結果
http://www.dakiny.com/atom.xmlの表示を確認してみた。

Internet Explorer 7の表示
順序が異なるのは、更新日で取得しているからのようだ。

Firefox 3.0.5の表示
問題なく表示できるようだ。

livedoor Readerの表示
11ヶ月ぶりに更新されました(恥)
atom.xmlを購読されていた方々、今まで。長らく放置しておいて、ほんとうにごめんなさい。
■備考
推測にすぎないのだが、MT3.3以前を使っていた方は、あたりまえのように、テンプレート以外の管理画面にタグを入れていた。
上記の手法はあくまでもハックであり、正しい手法ではない。MT4で、Atomで出力が得られないとしたら、上記の設定を疑ってみてもいいかもしれない。
参考になれば幸い。
投稿者: Dakiny 日時: 2009年1月16日 23:16 |
|
|
|
|
パーマリンク | コメント(0) | トラックバック (1)
トラックバック
このエントリーのトラックバックURL:
http://www.dakiny.com/mtos/mt-tb.cgi/1764
※文章内容と関係のないトラックバックは固くお断り。
この一覧は、次のエントリーを参照しています: Movable Type 4.2:カテゴリー名にタグを入れると、Atomで出力エラーがおきる:
» MT Atomの出力エラー from 優雅なアフィリエイト生活を夢みて
Atomの出力エラーで悩んでいましたが原因が判明しました。http://www.... [詳しくはこちら]
トラックバック時刻: 2009年10月18日 22:36





