45式::雑記
45式::雑記は、日々の事を記してないから日記ではなく雑記です。

記事概要が入力されたか本文から割り当てられたか調べる方法

コメント
0件
トラックバック
0件

MTは記事概要(MTEntryExcerpt)を入力しない場合、記事本文(MTEntryBody)の先頭から抜き出されたものが概要に割り当てられます。

そのため、記事概要は自分で入力をしてもしなくても中身が常に入っている状態になります。まあ、記事概要も記事本文も入力しなかった場合は別ですが、そんな使い方をする人はいないでしょう。

全ての記事概要は中身がある状態なのですが、その中身は投稿者が入力したものとシステムが記事本文から割り当てたものとが混在する事になります。

その記事概要が自分で入力したものか、記事本文から抜き出されたものか、判断する方法を見つけました。

三連ピリオドで判断する方法

この方法は、記事本文から抜き出して割り当てられたMTEntryExcerptの内容を利用します。MTEntryBodyから生成されたMTEntryExcerptは文末が...(三連ピリオド)で必ず終わるので、それを目印に区別します。

<MTSetVarBlock name="Excerpt"><$MTEntryExcerpt$></MTSetVarBlock>
<MTIf name="Excerpt" like="...$">
   <!--この記事概要は...で終わるので記事本文から自動生成されています。-->
<MTElse>
   <!--この記事概要は投稿者によって入力されています。-->
</MTIf>

この方法は...(三連ピリオド)が文末に付くという仕様が変更されると使えなくなる可能性があります。その可能性は低いと思われますが……全く無いとも言えません。

no_generateモディファイアを使って判断する方法

この方法はno_generateモディファイアを使って判断します。

no_generate="1 | 0"

値に1を指定すると、ウェブページの概要が空の場合にも、本文の先頭からの表示を行わず、結果、何も表示しません。

no_generateモディファイアは公式ドキュメントのMTPageExcerptから偶然見つけました。公式ドキュメントではMTEntryExcerptタグで使えるとは書いてありませんが、ちゃんと使えます。

<MTSetVarBlock name="Excerpt"><$MTEntryExcerpt no_generate="1"$></MTSetVarBlock>
<MTIf name="Excerpt">
   <!--この記事概要は投稿者によって入力されています。-->
<MTElse>
   <!--この記事概要はシステムによって記事本文から生成されています。-->
</MTIf>

…………需要なさげな記事だなぁ。

コメント[0]

コメントはまだありません。

コメント投稿フォーム

コメントを投稿するにはJavaScirptが必要です。ブラウザのJavaScriptを有効にしてください。

コメント投稿フォーム

トラックバック[0]

トラックバックはまだありません。

カテゴリ
アーカイブ
ヘルプ
Feed

フィードとは