MTIfを使いこなそう!(2) MTIfの逆バージョン、MTUnless
前々回から連載を開始した「MTIfを使いこなそう!」
おかげさまで大好評! ・・・ってなこともなく特に反応がありません(爆)
ま、別にいいんですけどね! ・・・とイジケながら第二回、行きます(笑)
前回は
<MTIf name="○○">表示したい内容</MTIf>
という形が基本で、○○に
- main_index と入れるとメインページにだけ内容が表示
- entry_template と入れるとブログ記事(エントリー)にだけ内容が表示
- category_archive と入れるとブログ記事リスト(カテゴリー)に表示
というところまでお話ししました。 大丈夫ですか?
・・・ま、大丈夫であろうとなかろうと次行きますが。どーせ反響ねぇし(爆)
で、今回は逆のバージョン。
「~~でない場合だけ表示」
という場合の処理の仕方を説明します。
これは具体例を考えた方がわかりやすいと思います。
例えばトップページ以外のすべてのページに何かを表示したい場合、<MTIf>だけで処理しようとすると、<MTIf>で
- エントリーの場合
- ウェブページの場合
- カテゴリーの場合
- 月別アーカイブの場合
- アーカイブページの場合
等々、トップページ以外のページで必要な分、<MTIf>の指定をいくつも書いていかなければなりません。
そこでこういう場合は逆の指定、「もし~~でなかったら」という処理をすればいいわけです。そのタグが今回取り上げる
<MTUnless>~~</MTUnless>
です。
Unless はまさにifの逆、if not の意味です。確か中学で習った英単語のはず。義務教育ナメたらあきまへんで!(笑)
使い方は<MTIf>と同じで、「name="○○"」で、○○に指定を入れると、それ以外の場合にのみ実行されます。
ですから「トップページ以外の全ページに表示したい」という場合は、
<MTUnless name="main_index">表示したい内容</MTUnless>
と書けば、トップページ以外の全ページでタグの中身が表示され、トップページには何も表示されない、となります。
たとえばこの『HOUSE & GARDEN』というサイト。
これは委託されてMT4で私が作ったものです。あ、ご覧になったらついでに家の一軒でも買ってやって下さい(爆)
このサイト内の個別のページを見てもらうと、左側のサイドメニューの一番上に
というバナー画像のリンクがありますよね?
しかしトップページでは、右側コンテンツ領域の下の方に、一回り大きいバナー画像がありますので、トップのサイドメニューには不要であり、「トップページのサイドメニューだけ外して」と言われました。
こういう時にこの<MTUnless>を使って、
<MTUnless name="main_index">
HOUSE & GARDEN ONLINE SHOPバナー画像のタグ
HOUSE & GARDEN SHOPバナー画像のタグ
</MTUnless>
とすれば、トップページには表示されなくなって、それ以外のページではそのまま表示されるわけです。
どこに表示させてどこに表示させたくないか、その対象範囲によって<MTIf>と<MTUnless>を効果的に使い分けて、スマートなソースを書きましょう(^^)
ということで次回はMTIf関係の三大基本タグの最後、といま勝手に命名しましたが(笑)、知っておくべきもう一つのタグ、<MTElse>を取り上げる予定です。
・・・反響がなくても取り上げます!(笑)
★この記事をSEO bookmarkに登録 ⇒
カテゴリ
MTタグ解説トラックバック(0)
このブログ記事を参照しているブログ一覧: MTIfを使いこなそう!(2) MTIfの逆バージョン、MTUnless
このブログ記事に対するトラックバックURL: http://www.kowaza.net/sys/mt-tb.cgi/34
If、Unlessで悩んでいましたので、大変参考になりました。
ありがとうございます。
質問があるのですが、もう少し細かく指定は出来ないのでしょうか。
特定のエントリーや特定のカテゴリーのみなど。
渡辺さんこんにちは。コメントありがとうございます。
お役に立てたようで何よりです(^^)
> 質問があるのですが、もう少し細かく指定は出来ないのでしょうか。
>
> 特定のエントリーや特定のカテゴリーのみなど。
結論から言えば、可能です。
ただそのためには、<MTSetVarBlock>を
使う必要があります。
きちんと説明しようとするとかなり長くなるので、
何回かに分けて説明していこうと思っているんですが、
ちょっとメルマガ発行と更新にまで手が回らず(^^;
とりあえずザックリと、任意のエントリーを
MTUnlessの対象にする方法を説明しますと、
たとえばエントリー(ブログ記事)テンプレートでしたら、
まずエントリーのIDを<MTSetVarBlock>で
任意の変数に代入します。変数名をeidとすると、
<MTSetVarBlock name="eid"><MTEntryID><MTSetVarBlock>
として、これをテンプレートの上の方に書いておきます。
これによって、eidという変数にエントリーのIDが
代入されます。
そしてたとえばIDが40のエントリーの時だけ
MTUnlessを適応したい、たとえばID40のエントリーだけ
ある画像を表示させない、といった処理は、
<MTUnless name="eid" eq="40">
<img src="~~" />
</MTUnless>
というようにすると、eidがイコール40の時、
つまりエントリーのIDが40の時以外は
<MTUnless>の中身、上の例だと<img>タグが
表示され、ID40のエントリーには画像が表示されない、
ということになります。
MTIfやMTUnlessは、MTSetVarやMTSetVarBlockを
併用することで、非常に強力かつ広範な機能となります。
なので本当はSetVarとSetVarBlockの理解が非常に
重要です。MT4を使い倒すには必須の知識なので、
自分もいずれはしっかりきっちりと説明したい、
とは思っています。今は時間がないのでまとまった
説明ができなくて申し訳ないですが、とりあえず
上記例を参考にいろいろと応用してみてください。
またご質問等ございましたらご遠慮なくどうぞ。
それでは。