MTで条件分岐

今回のエントリーの内容は、Movable Typeで条件分岐コンテンツを作成してみるです。条件分岐といっても様々な方法が考えられますが、私のわかる範囲での条件分岐をご紹介していみます。

条件分岐とは

簡単に言えば、500円のものを買うのに500円を払う人もいれば、1000円札・2000円札・5000円札・1万円札で払う人もいます。そうなってくると終わりは同じですが、答えの出し方の過程と処理も異なってきます。

  • 500円の買い物に500円を出されたら、「ありがとうござました。」
  • 1000円札であれば、「500円のお釣りのお返しとなります。ありがとうございました。」などと答えも違ってきます。

条件分岐は、こんな感じで考えればいいのかなと思います。

例えば、MTの条件分岐のプログラムを簡単に要約してみると、以下の通りになるかと思います。

<MTIF tag="条件設定">
条件設定に合致もしくは、設定の答えが存在する場合に処理されます。
<MTElse>
条件に合致しない、答えが存在しない場合には、こちらが処理されます。
</MTElse>
</MTIF>

MTIFが条件分岐の開始タグです。tagは条件設定です。 条件が合致すれば、その以下に記述するコードが処理されます。 条件が合致しない場合は、<MTElse>〜</MTElse>の間の記述が処理されるというものです。

先ほどの内容を条件分岐で表すといかになると思います。

<MTIF tag="提示金額500円">
「ありがとうござました。」
<MTElse>
「足りません。」などといった次の答えを用意しておく。
</MTElse>
</MTIF>

もっと細かく条件分岐してゆくと以下のようになると思います。

<MTIF tag="提示金額500円">
「ありがとうござました。」--------500円での処理
<MTElse>--------500円で条件合致しない時の処理

<MTIF tag="提示金額1000円">
「500円のお釣りのお返しとなります。ありがとうござました。」---1000円での処理
<MTElse>--------1000円で条件合致しない時の処理

<MTIF tag="提示金額2000円">
「1500円のお釣りのお返しとなります。ありがとうござました。」---2000円での処理
<MTElse>
「足りません。」---2000円で条件合致しない時の処理
</MTElse>
</MTIF>

</MTElse>
</MTIF>

</MTElse>
</MTIF>

上記のような感じで条件分岐構文が少しでも理解してもらえたら幸いです。

MTで条件分岐されているタグ

MTの中で普通に使われている条件分岐は、「続きをよむ」などといったMTEntryIfExtendedタグです。

MTEntryIfExtended
エントリーの追記(more)が入力されているときに実行する条件タグです。
参照http://www.sixapart.jp/movabletype/manual/3.3/a_template_tag_reference/index.html#MTEntryIfExtended

上記のタグがわかりやすいと思います。尚、Movable Type 3.3以降では、次の方法の利用を推奨。
<MTIfNonEmpty tag="EntryMore">〜</MTIfNonEmpty>

MTでの条件分岐タグする理由

Movable TypeはCMSとしてのシステムソフトですので、サイト構築・管理が容易なのはわかります。ただ、フォーマットに従ったコンテンツ提供という形になり、サイトデザインやさまざまな形でのコンテンツ提供については、少し範囲が狭いといったところがあります。

サイト構築にも慣れてくると、少しでも様々な形で、ユーザーニーズに合ったコンテンツ提供や、誘導を考えたコンテンツ提供もしたくなります。アクセス解析により、ユーザーのニーズの高いコンテンツを提供することで、毎日の安定したアクセスを目指すことも可能となり、随時コンテンツの提供方法の見直しなんかも必要になってくることもありえると思います。

ほとんどは、サイト構築前の設計でフラットにすることが可能であるとおもうのですが、ディレクトする知識がないと、コンテンツがバラバラになり、目標達成にも時間がかかったりします。

条件分岐を使うための要因はいくつか考えられると思います。本当は、そういった要因の理由を公開し、改善策・解決策を共有できるといいのですが、そういった条件分岐のサイト構築ワークフロー共有の方がこれからのCMSシステム利用には、とても重要な気がします。

MTで使える条件分岐タグ

頻繁に使うと思われる条件分岐タグを取り出してみました。

マニュアル: テンプレート・タグ リファレンスからその他から抽出
http://www.sixapart.jp/movabletype/manual/3.3/a_template_tag_reference/index.html

MTIfArchiveTypeEnabled
指定したアーカイブの種類が有効のときに実行する条件タグです。
MTIfNonZero
指定したタグの値がゼロでないか判定する条件タグです。
MTIfNonEmpty
指定したタグの値が空でないか判定する条件タグです
MTElse
条件タグの条件に合致しなかったときに、実行するコンテナ・タグです。
MTIfCategory
ンテキスト内に指定されたカテゴリーが含まれる、またはアクティブなエントリーが指定されたカテゴリーに属している場合に有効になる条件タグです。
MTEntryIfCategory
コンテキスト内に指定されたカテゴリーが含まれる、またはアクティブなエントリーが指定されたカテゴリーに属している場合に有効になる条件タグです。
MTHasSubCategories
現在のカテゴリーにサブカテゴリーが登録されているときだけ実行する条件タグです。
MTHasNoSubCategories
現在のカテゴリーにサブカテゴリーが存在しないときだけ実行する条件タグです。
MTHasParentCategory
現在のカテゴリーに親カテゴリーが存在されているときだけ実行する条件タグです。
MTHasNoParentCategory
現在のカテゴリーに親カテゴリーが存在しないときだけ実行する条件タグです。
MTIfIsAncestor
現在のカテゴリーが、指定したカテゴリーをサブカテゴリーとして含んでいるか判定する条件タグです。
MTIfIsDescendant
現在のカテゴリーが、指定したカテゴリーのサブカテゴリーにあたるか判定する条件タグです。
MTIfStraightSearch
エントリーの検索の場合に実行する条件タグです。
MTIfTagSearch
エントリー・タグの検索の場合に実行する条件タグです。

コメントやトラックバック関連の条件分岐もありますが、デフォルトの条件設定がベターであると思ますので取り上げるのは、やめておきます。

長くなりましたので、次回のエントリーで条件分岐の使えるパターンなどを紹介してみたいと思います。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MTで条件分岐

このブログ記事に対するトラックバックURL: http://weblibrary.s224.xrea.com/x/mt/mt-tb.cgi/55

コメント(1)

とても分かりやすくて助かりました!

コメントする

アイテム

  • ff-logo-big

    ff-logo-big: firefoxロゴ

  • fmtube_image

    fmtube_image: fmtubesキャッチイメージ

  • mock.jpg

    mock.jpg: fm+tubesのモックページ(デザインレイアウト)。最終的にはこのスタイルでマルチブログで展開してみる構想。

  • mtdeinfo

    mtdeinfo: Movabletypeを勉強するならこのサイト。サンプルファイルもあって、情報も探しやすいです。とてもきれいに情報表示されていて、とても参考になります。

  • mytumblr

    mytumblr: 個人の趣味でのtumblrです。女性のポートレートなんかがおおいです

  • caputure_contextmenu

    caputure_contextmenu: tumblr caputureを右クリックコンテキストメニューで選択する

  • tumblrgallery

    tumblrgallery: tumblrを使ってWEBデザインGalleryを簡単に作ってみました。

  • psdtuts

    psdtuts: http://psdtuts.com/のイメージ画像

  • designflavor.

    designflavor.: http://www.designflavr.com/のイメージ

  • entrymain_template

    entrymain_template: ブログ記事の概要は、インデックステンプレート、ブログ記事のリスト(アーカイブテンプレート)、検索結果(システムテンプレート)の3つのテンプレートで共通に使われています。それぞれのテンプレートでの表示内容の違いをイメージに表してみました。

このブログ記事について

このページは、スカイが2006年9月11日 15:11に書いたブログ記事です。

ひとつ前のブログ記事は「最近のトラックバックテンプレートタグ」です。

次のブログ記事は「MTで条件分岐MTIfNonEmpty:特定タグが空白かどうかチェックし分岐する」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。