技術情報提供ブログ

出力するコンテンツを状況によって変更する

Movable Type タグの中には、MTIf といったかたちではじまるものがあります。これらのタグは条件判定をし、条件に一致した場合のみコンテナ(囲まれた)されたコンテンツを表示する。という機能を持ちます。また、条件判定コンテナタグの中では、MTElse コンテナタグが利用可能です。MTElse コンテナタグは、条件判定コンテナタグが判定する条件に一致しない場合のみ、コンテナされたコンテンツを表示します。簡単な例を図に示します。

mtif.png

休日の予定を設定することを考えてみてください。天気予報が晴れだった場合は、ピクニックに、でも雨だった場合には映画鑑賞にといったような設定をすることがあると思います。このような条件によって答えを判断する条件分岐を行えるタグが MTIf といったかたちではじまるタグです。

条件判定を行う対象はタグによって様々です。中でも MTIfNonEmpty というタグは、ユーザーが入力できるフィールドを対象に条件判定が可能になるので、Movable Type の可能性を広げます。

MTIfNonEmpty

MTIfNonEmpty とは、tag アトリビュートで指定したタグになにか値がある場合のみ、タグで囲まれたコンテンツを表示するというタグです。実際にテンプレートには以下のようにマークアップされます。

<MTIfNonEmpty tag="値の有る無しを設定できる変数タグ">
  tagアトリビュートで指定したタグに値がある時のみ、表示するコンテンツ
</MTIfNonEmpty>

このままでは、tag アトリビュートで指定したタグに値が無い場合は、何も表示されません。ですので、MTElse タグと併用し tag アトリビュートで指定したタグに値が無い場合にも、なにかしらのコンテンツを表示するようにします。

<MTIfNonEmpty tag="値の有る無しを設定できる変数タグ">
  tagアトリビュートで指定したタグに値がある時のみ表示するコンテンツ
  <MTElse>tagアトリビュートで指定したタグに値が無い時のみ表示するコンテンツ</MTElse>
</MTIfNonEmpty>

この MTIfNonEmpty タグをうまく利用すると、様々なケースに対応できるようになります。MTIfNonEmpty タグは様々なタグに値があるのか無いのかを判別して働くので、ほぼすべてのタグが対象です。いくつか利用例を示してみます。

エントリーにカテゴリーが設定されている場合はカテゴリー名を表示し、設定されていない場合は、『カテゴリーなし』と表示する

MTEntries コンテナタグ内で利用できる MTEntryCategory 変数タグに値がある(エントリーにカテゴリーが設定されている)場合は、MTEntryCategory の値(メインカテゴリー名)を返します。しかし、MTEntryCategory 変数タグに値が無い(エントリーにカテゴリーが設定されていない)場合は、MTElse コンテナタグに内包された『カテゴリーなし』というテキストが表示されます。

<MTEntries>
  <MTIfNonEmpty tag="MTEntryCategory">
    <$MTEntryCategory$>
    <MTElse>カテゴリーなし</MTElse>
  </MTIfNonEmpty>
</MTEntries>
最新10件のエントリーの中で、任意のエントリーにだけ new マークをつける

MTEntries コンテナタグで利用できる lastn アトリビュートで 10 と指定し、最新10件のエントリーを表示させます。エントリーごとに持っているキーワード MTEntryKeywords を利用します。もし、キーワードに何か一文字でも文字が入っていたら、<li class="new"> を表示。しかし何も無い場合は <li> を表示するように設定しています。キーワードに何か入っている場合だけ、<li class="new"> になるので、スタイルシートと組み合わせて指定した記事(キーワードに何か入力したエントリー)のみ『new』アイコンを表示させることができます。

    <MTEntries lastn="10"> <MTIfNonEmpty tag="MTEntryKeywords"><li class="new"><MTElse><li></MTElse></MTIfNonEmpty><a href="<$MTEntryPermalink$>" title="<$MTEntryTitle$>"><$MTEntryTitle$></a></li> </MTEntries></ul>

また、定義する CSS のサンプルは以下のようになります。

li.new {
  padding-left: 20px;
  background: transparent url(new-icon.gif) no-repeat left center;
}

今回の例では、MTEntryKeywords の値を利用しましたが、MTEntryExcerpt でも同様の事が可能です。MTIfNonEmpty で値の有無を条件判定する対象がエントリーの概要の場合、ブログの基本設定で『概要にいれる文字数』を『0』に設定する必要があります。これはエントリー投稿時に概要を空白にしていても、エントリーの本文から指定文字数自動挿入される為です。


トラックバック

トラックバック URL

コメント

コメント投稿

本エントリーに関係のないご質問はサポートにお願いします。また、Movable Type に関するフィードバックは専用フォームよりお願い致します。

コメント投稿フォーム:

このページのトップへ