Under the Bridge

a Picture of the Late Him

MT4.1:配列サンプル(特定カテゴリの全エントリのみを配列へ代入)

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

MT4.1(Movable Type4.1)での、特定カテゴリの全エントリのみを配列へ代入するサンプル。

コード


<MTSetvar name="counter" value="-1"$>
<MTEntries category="211Movable Type4">
	<$mt:setvar name="counter" op="++"$>
	<MTSetvarBlock name="ShowEntry[$counter]">
		<$MTEntryTitle$>
	</MTSetvarBlock>
</MTEntries>

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

結果と考察

動作原理は以下。

1行目:counterという名称の変数を-1で初期化する。配列は0から使用する・かつMTEntriesループでは値の代入直前にインクリメントを行うので。

2行目:MTEntriesブロックタグループ開始。このサンプルのように「211Movable Type4」カテゴリを指定するときはcategory="211Movable Type4"というモデファイアを付加する。複数カテゴリのエントリを取得したい場合には、カテゴリ名をORで区切って列挙する。「211Movable Type4」カテゴリと「「210Movable Type」カテゴリに属するエントリのみを取得する場合にはcategory="211Movable Type4 OR 210Movable Type"でいい。

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

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

5行目:ShowEntry[]配列へエントリタイトルをセット。

6行目:MTSetVarBlock閉じるタグ。

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

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

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

余談だが、MTEntriesブロックタグのcategory="211Movable Type4"モデファイア、かなり気に入った。見やすい・簡単なコードを書きたいので、難解(であろうと思われる)MTIf系・MTSetVar系を多用するのはわたしの本位ではない。デフォルトでコードを簡素化する機能があるのならば、そちらを使うべきである。

トラックバック(0)

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

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

コメントする






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

parts

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

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)