Under the Bridge

a Picture of the Late Him

MT4.1:配列サンプル(全カテゴリを配列へ代入)

2008年1月 6日 11:31 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

MT4.1(Movable Type4.1)での、全カテゴリを配列へ代入するサンプル。先日もこういうエントリがあったと思うが、更に改造してみた。

テストはテンプレートではなくエントリにeval-templateプラグインを適用してエントリ中に直接テンプレートタグを記述している。

コード


<MTSetvar name="counter" value="-1"$>
<MTCategories>
	<$mt:setvar name="counter" op="++"$>
	<MTSetvarBlock name="ShowCategory[$counter]">
		<$MTCategoryLabel$>
	</MTSetvarBlock>
</MTCategories>

<mt:for var="x" from="0" to="$counter">
	インデックス:<MTGetVar name="x"> / 値:<MTGetVar name="ShowCategory[$x]">
</mt:for>

結果と考察

動作原理は以下。

1行目:counterという名称の変数を-1で初期化する。配列は0から使用する・かつMTCategoriesループでは値の代入直前にインクリメントを行うので。なおエントリ中にeval-templateを用いたテストではこの一行が無いとなぜか投稿時にエラーとなるぽい。

2行目:MTCategoriesブロックタグループ開始。

3行目:counter変数を+1インクリメントする。

4行目:ShowCategory配列へ代入することをMTSetVarBlockで定義。配列カッコ内でcounter変数を扱うときは先頭へドルマークを付加する。モデファイアに変数を使用するときに先頭へドルマークを付加するのと同じ。

5行目:ShowCategory[]配列へカテゴリラベルをセット。

6行目:MTSetVarBlock閉じるタグ。

7行目:MTCategoriesブロックタグループ終了。

9~11行目:動作チェック用コード。

このサンプルでは、コードの読みやすさを考慮してインデントと改行を与えているのだが、SetVar系のテンプレートタグは実際は一行で書く。そうしないと無駄な空白行がソースへ含まれてしまう。もちろんコメントを入れるとそれがそのまま出力されて実にかっこ悪い。

なお上記サンプルどおりではエントリの含まれないカテゴリは配列へセットされない。エントリの含まれないカテゴリもすべてセットしたい場合はMTCategoriesへshow_empty="1"モデファイアを付加する。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.1:配列サンプル(全カテゴリを配列へ代入)

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)