<MTEntryExcerpt>タグ、<MTPageExcerpt>タグで書き出されるもの

  • 投稿日:
  • by
  • カテゴリ:
このエントリーをはてなブックマークに追加

<MTEntryExcerpt>タグ、<MTPageExcerpt>タグはブログ記事やウェブページの編集ページで概要に入力した内容を表示してくれます。

20150401004358_blogpix.png

使用例としては下記のような感じで、<head>要素の<meta>タグで使うことが多いとおもいます。

<meta name="description" content="<$mt:EntryExcerpt remove_html="1"$>">

ただし、この概要を入力し忘れてしまうこともあったり...。特にウェブページの問い合わせフォームなどの様なページは忘れがちではないかと思います。

そこで、もし何も入力されていなくても、最低限の内容が入るように以下のようにテンプレートを作っておきました。

<mt:If tag="pageexcerpt">
  <mt:PageExcerpt>
 <mt:Else>
  このページは<mt:PageTitle>のページです。
</mt:If>

上記のように書いておけば、概要欄に何も書かれていない場合は、<mt:Else>以下の「このページは<mt:PageTitle>のページです。」の部分が書き出されて、最低限の説明は入ると思っていました。

ところが、上記のように書いているにもかかわらず、概要が未入力の場合に書き出されているのが<mt:PageBody>の先頭部分から抜き出された文章になっていました。本文からn文字を抜き出して書き出すようにはしていないのになぜ?という感じで何度かテンプレートを見直したりしました。

なぜだか理由がわからず、ふとMTタグリファレンスを見てみるとそこには以下のような説明が書かれていました。

MTPageExcerpt

引用元

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

そうなんです。概要が未入力の場合は本文から決められた文字数が切り出されるようになっています。この文字数は「設定 > 投稿 > 概要の文字数」で設定されている文字数になります。

ちなみに<MTEntryExcerpt>タグ、<MTPageExcerpt>タグには「no_generate="1 | 0"」というモディファイアが用意されていたので、「no_generate="1"」を設定すればmt:Ifで分岐できるかと思ったのですが、分岐はされず何も書き出されませんでした。

概要が未入力の場合は本文から適当に切り出したもので良いということなら<MTEntryExcerpt>タグ、<MTPageExcerpt>タグを書いておけばいいのですが、未入力の場合に「このページは<mt:PageTitle>のページです。」のように決められたものを出力させたい場合は、少し書き方を変えてあげないとならないです。

//[1]概要が入力されている場合、それを変数に設定
<mt:PageExcerpt no_generate="1" setvar="excerpt">

//[2]変数excerptの値の有無で書き出す内容を切り替える
<mt:If name="excerpt">
  <$mt:PageExcerpt$>
 <mt:Else>
  概要が未入力の場合に書き出したい内容
</mt:If>

上記のように[1]で概要欄の内容を変数に入れて、[2]でその変数の有無で書き出す内容を切り替えるという方法を使うと、概要欄の入力状況によって書き出す内容をコントロールしやすくなります。

サンプル
WEBページのテンプレートに以下のように設定して、「アバウト」のページを書き出した場合。
<mt:PageExcerpt no_generate="1" setvar="excerpt">
概要:<mt:If name="excerpt"><$mt:PageExcerpt$><mt:Else>「<$mt:PageTitle$>」のページです。</mt:If>

[1]概要に「概要欄の入力内容」と入力されている場合。
書き出される内容 → 概要:概要欄の入力内容

[2]概要欄が未入力の場合。
書き出される内容 → 概要:「アバウト」のページです。

う〜ん、今まで<MTEntryExcerpt>タグ、<MTPageExcerpt>タグが自動的に本文から書き出すのを知らなかった...。本文から抜き出す場合、わざわざ<mt:EntryBody words="40">とか書いてた。