アファメーションで独立・起業・夢実現。「いきなり!社長宣言!!」-“夢は口に出すことで実現する!”というアファメーション:ライブラリー

2009年2月 1日

MT4(Movable Type4)でカテゴリごとに“効率的に”ヘッダー画像を差し替える方法。

夢実現のアファメーションを実践する起業家にもっとも読まれているブログは?

MTIfCategoryでカテゴリごとの処理を記述。

Movable Type4でコンテンツごとにヘッダー画像とかを変えたい場合、便利なのが

<MTIfCategory>タグ。

特定のカテゴリだけで何か処理をしたいような場合、

<MTIfCategory>
~実行したい処理
</MTIfCategory>

と書けばいい。

んで、カテゴリごとに画像を変えたいのなら、

<MTTopLevelParent>
<MTIfCategory name="カテゴリ名1">
<h2><img src="<$MTBlogURL$>shared/img/headerimg_<$MTSubCategoryPath$>.jpg" alt="<$MTCategoryLabel$>" width="910" height="180" /></h2>
</MTIfCategory>

<MTIfCategory name="カテゴリ名2">
<h2><img src="<$MTBlogURL$>shared/img/headerimg_<$MTSubCategoryPath$>.jpg" alt="<$MTCategoryLabel$>" width="910" height="180" /></h2>
</MTIfCategory>



</MTTopLevelParent>

みたいな感じで、カテゴリ毎に処理を書いて、後は画像を用意すればいい。
(headerimg_products.jpgとか、headerimg_price.jpgとか)

でも…

MTタグの中(モディファイア)では、MTタグは使えない

このやり方だとそもそもMTIfCategoryのnameモディファイアの値が違うだけなのに、コンテンツ(カテゴリ)が増えるたびに同じ処理を記述(追加・修正)しなきゃいけない。

んじゃあ、どうせカテゴリごとに<$MTCategoryLabel$>を使うんだったら、nameの値に<$MTCategoryLabel$>を入れりゃ一個でいいじゃん!と思って、こう↓記述したら…

<MTTopLevelParent>
<MTIfCategory name="<$MTCategoryLabel$>">
<h2><img src="<$MTBlogURL$>shared/img/headerimg_<$MTSubCategoryPath$>.jpg" alt="<$MTCategoryLabel$>" width="910" height="180" /></h2>
</MTIfCategory>
</MTTopLevelParent>

エラー…というか、なにも表示されず。...orz

いろいろ調べると、どうやらMTタグの中(モディファイア)ではMTタグは使えないらしい。(泣)

んじゃ、コンテンツ(カテゴリ)増えるごとに修正しろっつーのかっ!
うーん、めんどくせぇ…っ!!

MTタグの中(モディファイア)でMTタグを使う方法。

と、思っていたら、MTタグの中(モディファイア)でMTタグを使う方法を発見。
(たぶん…みんなそうしてたんだろうけど。汗)

まぁ、厳密に言うとMTタグの中でMTタグを書くわけじゃなくて、MTSetVar系のタグを使って、変数に<$MTCategoryLabel$>を代入して、その変数をnameモディファイアで指定するやり方です。

通常、MTSetVarは

<MTSetVar name="foo" value="bar">

と書いて、valueの値(bar)を変数fooに代入するんだけど、これじゃ結局さっきと同じ(MTタグの中でMTタグを使うことになる)なのでできない。

そこで

MTSetvarBlock、もしくはMTSetVarsを使うことで実装。

MTSetvarBlockの場合は、

<MTSetVarBlock name="name_foo">
変数name_fooに代入したい値
<MTSetVarBlock>

MTSetVarsの場合は、

<MTSetVars>
変数1=値1
変数2=値2


</MTSetVars>

といった感じで複数の変数を同時指定することができる。

んで、設定した値は$マークをつけて呼び出すことで利用することができるので、さっきのカテゴリごとに画像を切り替える例をとると、

<MTTopLevelParent>
<MTSetVarBlock name="category_name"><$MTCategoryLabel$></MTSetVarBlock>
<MTIfCategory name="$category_name">
<h2><img src="<$MTBlogURL$>shared/img/headerimg_<$MTSubCategoryPath$>.jpg" alt="<$MTCategoryLabel$>" width="910" height="180" /></h2>
</MTIfCategory>
</MTTopLevelParent>

もしくは

<MTTopLevelParent>
<MTSetVars>
category_name=<$MTCategoryLabel$>
</MTSetVars>
<MTIfCategory name="$category_name">
<h2><img src="<$MTBlogURL$>shared/img/headerimg_<$MTSubCategoryPath$>.jpg" alt="<$MTCategoryLabel$>" width="910" height="180" /></h2>
</MTIfCategory>
</MTTopLevelParent>

とすることでOK。

こうしておけば、仮にコンテンツ(カテゴリ)が増えたとしても、規定のディレクトリに「headerimg_カテゴリパス名.jpg」という名前の画像さえ用意すれば自動的にヘッダー画像が差し替えられます。

いやー、いままでのめんどくささが一気に解消!

やっぱMT(Movable Type4)っていいなーw

関連サイト

この記事に関連する(かもしれない)書籍

 

投稿者 kuro : 2009年2月 1日 15:32 | ID:793

ページトップ△

ページトップ△