TopMovable Typeトラブルシューティング > Movable Type 4.25 における MTEntries タグの category モディファイアの不具合について
News
各種ブログテンプレート
2009年4月28日

エントリー本文

Movable Type 4.25 における MTEntries タグの category モディファイアの不具合について

Posted at April 28,2009 12:17 AM
Category:[トラブルシューティング]
Tag:[, ]

キャッチアップが遅れましたが、Movable Type 4.25 で MTEntries タグに category モディファイアを利用している状態で、カテゴリー名に次の文字が含まれる場合、

  • 半角丸カッコ(の閉じカッコ):")"
  • 半角アンパサンド:"&"

再構築時に次のようなエラーが発生します。

再構築エラー

上記の事象については、すでに下記の記事で公開されています。

Movable Type 備忘録 - Movable Type 4.25 リリース

ここでは、半角丸カッコや半角アンパサンドをカテゴリー名に利用している場合の暫定対処案を示します。

1.半角丸カッコを利用している場合

とりあえず、カテゴリ名に含まれる全角丸カッコに変更します。例えば、「(X)HTML」というカテゴリー名は、「(X)HTML」に変更します。

変更前
カテゴリー名(変更前)

変更後
カテゴリー名(変更後)

次にテンプレートを変更します。category モディファイアにカテゴリー名を直接記述している場合は、単にその部分を書き換えます。

変更前

<mt:Entries category="(X)HTML">
...中略...
</mt:Entries>

変更後

<mt:Entries category="(X)HTML">
...中略...
</mt:Entries>

カテゴリ名を出力する時に、全角の丸カッコを半角の丸カッコに変更して出力したい場合は、次のように MTSetVar タグと MTCategory タグに regex_replace モディファイアを利用すると良いでしょう。

<mt:setvar name="foo" value="/(.*)((.*))(.*)/" />
<mt:categoryLabel regex_replace="$foo","$1($2)$3" />

カテゴリアーカイブウィジェットに適用する場合は、次の青色部分を追加します。

<mt:IfArchiveTypeEnabled archive_type="Category">
<div class="widget-archive widget-archive-category widget">
    <h3 class="widget-header>カテゴリ</h3>
    <div class="widget-content">
    <mt:TopLevelCategories>
        <mt:SubCatIsFirst>
        <ul>
        </mt:SubCatIsFirst>
        <mt:If tag="CategoryCount">
            <li><a href="<$mt:CategoryArchiveLink$>"<mt:If tag="CategoryDescription"> title="<$mt:CategoryDescription remove_html="1" encode_html="1"$>"</mt:If>><mt:setvar name="foo" value="/(.*)((.*))(.*)/" /><mt:categoryLabel regex_replace="$foo","$1($2)$3" /> (<$mt:CategoryCount$>)</a>
        <mt:Else>
            <li><$mt:CategoryLabel$>
        </mt:If>
        <$mt:SubCatsRecurse$>
            </li>
        <mt:SubCatIsLast>
        </ul>
        </mt:SubCatIsLast>
    </mt:TopLevelCategories>
    </div>
</div>
</mt:IfArchiveTypeEnabled>

適用前
カテゴリアーカイブ(適用前)

適用後
カテゴリアーカイブ(適用後)

2.半角アンパサンドを利用している場合

とりあえず、カテゴリ名に含まれる全角アンパサンドに変更します。例えば、「foo & bar」というカテゴリー名は、「foo & bar」に変更します。

変更前
カテゴリー名(変更前)

変更後
カテゴリー名(変更後)

次にテンプレートを変更します。category モディファイアにカテゴリー名を直接記述している場合は、単にその部分を書き換えます。

変更前

<mt:Entries category="foo & bar">
...中略...
</mt:Entries>

変更後

<mt:Entries category="foo & bar">
...中略...
</mt:Entries>

カテゴリ名を出力する時に、全角のアンパサンドを半角のアンパサンドに変更して出力したい場合は、先ほどと同様、MTSetVar タグと MTCategory タグに regex_replace モディファイアを利用します。

<mt:setvar name="foo" value="/(.*)&(.*)/" />
<mt:CategoryLabel regex_replace="$foo","$1&amp;$2" />

カテゴリアーカイブウィジェットに適用する場合は、次の青色部分を追加します。

<mt:IfArchiveTypeEnabled archive_type="Category">
<div class="widget-archive widget-archive-category widget">
    <h3 class="widget-header>カテゴリ</h3>
    <div class="widget-content">
    <mt:TopLevelCategories>
        <mt:SubCatIsFirst>
        <ul>
        </mt:SubCatIsFirst>
        <mt:If tag="CategoryCount">
            <li><a href="<$mt:CategoryArchiveLink$>"<mt:If tag="CategoryDescription"> title="<$mt:CategoryDescription remove_html="1" encode_html="1"$>"</mt:If>><mt:setvar name="foo" value="/(.*)&(.*)/" /><mt:CategoryLabel regex_replace="$foo","$1&amp;$2" /> (<$mt:CategoryCount$>)</a>
        <mt:Else>
            <li><$mt:CategoryLabel$>
        </mt:If>
        <$mt:SubCatsRecurse$>
            </li>
        <mt:SubCatIsLast>
        </ul>
        </mt:SubCatIsLast>
    </mt:TopLevelCategories>
    </div>
</div>
</mt:IfArchiveTypeEnabled>

適用前
カテゴリアーカイブ(適用前)

適用後
カテゴリアーカイブ(適用後)

なお、半角のアンパサンドは、出力時に実体参照しておかないと valid な(X)HTML文書にならないので注意しましょう。

Posted by yujiro ReTweet This!
関連記事
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL


コメントする
greeting

*必須



ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)

Now loading...
Introduction
Entries of this Category
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.02