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