TopMovable Type > バージョン別 > 4.1 > MTLoop タグによる配列変数・ハッシュ変数の制御
2007年12月27日

MTLoop タグによる配列変数・ハッシュ変数の制御

Posted at December 27,2007 1:35 AM
Category:[4.1, テンプレートタグ]
Tag:[, ]

Movable Type 4.0 では管理画面用だった MTLoop タグが、Movable Type 4.1 ではテンプレート上で利用できるようになりました。これにより配列やハッシュの取得が MTLoop タグで実現できるようになります。

以下、MTLoop での配列とハッシュの利用方法を紹介します。

1.配列を取得する

MTFor タグで設定し、MTLoop タグで取得するサンプルを示します。

<mt:for var="i" from="0" to="9">
    <mt:setvar name="foo[$i]" value="$i">
</mt:for>
 
<mt:loop name="foo">
    <mt:getvar name="__value__">
</mt:loop>

MTLoop タグの使い方は、name モディファイアに配列変数名を設定するだけで、ここでは foo を設定しています。

配列変数 foo の値は予約変数 __value__ に自動的に設定されるので、あとは MTGetVar タグの name モディファイアに指定するだけです。

MTLoop タグの部分を MTFor タグで書くと

<mt:for var="i" from="0" to="9">
    <mt:setvar name="foo[$i]" value="$i">
</mt:for>

となるので、MTLoop タグの方が簡単に書けることがお分かりになると思います。

なお、MTLoopタグでは配列のインデックスが0から処理が開始されるため、設定側の MTFor タグの from モディファイアは「0」、to モディファイアは「9」を設定しています。

2.ハッシュを取得する

4.1 ベータ 2 から新しく追加された sethashvar タグ(ハッシュをまとめて定義できるタグ)を用いて、ハッシュを作成し、MTLoop タグで取得するサンプルを示します。

<mt:sethashvar name="week">
<mt:setvar name="mon" value="Monday">
<mt:setvar name="tue" value="Tuesday">
<mt:setvar name="wed" value="Wednesday">
<mt:setvar name="thu" value="Thursday">
<mt:setvar name="fri" value="Friday">
<mt:setvar name="sat" value="Saturday">
<mt:setvar name="sun" value="Sunday">
</mt:sethashvar>
 
<mt:loop name="week">
    <$mt:getvar name="__key__"$> <$mt:getvar name="__value__"$>
</mt:loop>

テンプレートを再構築すると、下のように出力されます。

sun Sunday
fri Friday
tue Tuesday
sat Saturday
mon Monday
wed Wednesday
thu Thursday

配列変数の時と同様、name モディファイアに配列変数名を設定します。ここでは week を設定します。

配列変数 week のキーの値は予約変数 __key__ に、キーに対応する値は予約変数 __value__ に自動的に設定されるので、それぞれ MTGetVar タグの name モディファイアに指定します。

ハッシュは配列のような順序性がありませんが、sort_by モディファイアを設定することで、一定の規則にしたがって出力されます。

キーの文字列順で並べ替え

<mt:loop name="[変数名]" sort_by="key">

キーの文字列順(逆順)で並べ替え

<mt:loop name="[変数名]" sort_by="key reverse">

キーに対応する値の文字列順で並べ替え

<mt:loop name="[変数名]" sort_by="value">

キーに対応する値の文字列順(逆順)で並べ替え

<mt:loop name="[変数名]" sort_by="value reverse">

キーに対応する値の文字を数値として比較・並べ替え

<mt:loop name="[変数名]" sort_by="value numeric">

キーに対応する値の文字を数値として比較・並べ替え(逆順)

<mt:loop name="[変数名]" sort_by="value numeric reverse">
Posted by yujiro
関連記事
人気エントリー
トラックバックURL


コメント

この記事とは全然関係ないですが、cormun rizer のページが開けないのですが、こちらの不具合でしょうか?

[1] Posted by まさあき : December 27, 2007 8:58 AM

>まさあきさん
こんにちは。
ご質問の件につきまして、申し訳ありませんがIE以外のブラウザ(Firefox/Opera等)でお試し頂けますでしょうか(IEではサーバ移転後にページが開けなくなってしまっていますが、解析時間がとれていません)。
それではよろしくお願い致します。

[2] Posted by yujiro Author Profile Page : December 28, 2007 1:32 PM
コメントする

*必須



お知らせ:2008年5月現在、多忙のため、7月頃までコメントを速やかに回答できない状態が続きます。ご質問の内容によっては回答が7月以降になる可能性がありますので、予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)

Now loading...
Entries of this Category
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
BlogPeople
Now loading...
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 4.1
 
List Me!