Home> Internet >  MovableType >  ブログ記事の本文にスニペットやmtevalなどを使っている時は注意しよう

ブログ記事の本文にスニペットやmtevalなどを使っている時は注意しよう

なぜ、いきなりこんな記事というのは・・・ほっといてください。

値に 1 を設定すると、モディファイアを付与したファンクションタグの内容に含まれる Movable Type タグを展開します。
たとえば、MTEntryBody にこのグローバルフィルターを設定すると、ブログ記事本文で MTタグを使用できます。

[mteval | グローバル・モディファイアリファレンス:(2012年4月5日 20:24:19 引用)]

これは、かなり便利な機能です。MTInclude でプロフィール画像モジュールを使うなんて、天才的です。しかも変数としてユーザー名渡すなんてうますぎる。ただ、一箇所詰めが甘かった・・・


本文が使われる場所


ブログ記事の本文というのは、意識していない箇所にも使われています。
単純に公開された記事(ブログ記事テンプレート)だけではないんです。そこが要注意。
例えば今回のように「最新記事のフィードテンプレート」内には、「<summary><$mt:EntryExcerpt remove_html="1" encode_xml="1"$></summary>」だけではなく、以下の記述も存在します。

    <content type="html" xml:lang="<$mt:BlogLanguage ietf="1"$>" xml:base="<$mt:BlogURL encode_xml="1"$>">
        <$mt:EntryBody encode_xml="1"$>
        <$mt:EntryMore encode_xml="1"$>
    </content>

それからMTEntryExcerptも注意すべき。

ブログ記事の概要に入力した内容を表示します。概要に記述がないときは、ブログ記事の本文を、ブログ記事の設定で指定した概要の文字数だけ先頭から表示します。

[MTEntryExcerpt | テンプレートタグリファレンス:(2012年4月5日 20:39:43 引用)]

ブログ記事本文から自動生成された部分に、MTタグやスニペットコードが含まれていたとか、予想外の落とし穴が待っています。しかも自動生成の概要は文字数により切り取られますので、たまたまMTタグの途中で切り取られるというケースもありえます。

以上のことを踏まえて、フィードなどでのEntryBodyやEntryMoreが使われている部分には、必ず本文と同じグローバルフィルターを付ける必要があります。また検索などの動的生成についても同じく対処が必要です。
本文は、ソレでいいのですが自動生成時の概要などは、対応が難しかったりします。私は極力そういう場合、MTEntryExcerptタグは使わずに、MTEntryBodyから生成させるようにしています。
例えばmetaタグのdescriptionに、MTのデフォルト設定で概要を指定したい場合(要は100文字ということです)で、本文にMTタグを使い、mteval指定している時は次のように生成させます。

<meta name="description" content="<$MTEntryBody mteval="1" remove_html="1" trim="1" strip_linefeeds="1" trim_to="100+..." escape="html"$>" />

この場合、remove_htmlする前に、mteval処理するのがキモです。他にもスニペットなどの処理がある場合には、ここにグローバルフィルターを追加します。一旦HTMLとして変換出力した後で、HTML要素を削除し整形し、HTMLエスケープを行なっています。

また、コレとは別に同じく概要で生成される部分ですが、MTEntryTrackbackDataは要注意です。最近は使っている方も居ないかも知れないですが、コレが出力するRDF内にも記事の概要が出力されます。この出力については、上手に処理がしにくいので、以前はRDF自体をMTMLで記述し直して対応していました。今は出力していません。

通常ブログ記事ページ内は、キチンとチェックするのですが、どうしてもこういう細かいメタ情報などの部分は、処理を忘れがちです。
本文にグローバルフィルターを追加する場合は、一度全テンプレートを見直すぐらいの気持ちで、影響範囲を確かめるようにしましょうね。実際かなりのサイトのメタ情報でMTタグやスニペットを見かけたことがあります。

Comment:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://www.zelazny.mydns.jp/cgi-bin/MT/mt-tb.cgi/2277

Home> Internet >  MovableType >  ブログ記事の本文にスニペットやmtevalなどを使っている時は注意しよう

CC Licence

Creative Commons License

このブログはクリエイティブ・コモンズでライセンスされています。

Feeds

Return to page top