今回のエントリーの内容は、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
- エントリー・タグの検索の場合に実行する条件タグです。
コメントやトラックバック関連の条件分岐もありますが、デフォルトの条件設定がベターであると思ますので取り上げるのは、やめておきます。
長くなりましたので、次回のエントリーで条件分岐の使えるパターンなどを紹介してみたいと思います。


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