Movable Type の配列とハッシュの入れ子
Movable Type では配列とハッシュの入れ子が可能です。
以前、MT4.1 でハッシュの入れ子が動作しなかったため、そのまま忘却の彼方でしたが、MT4.261 以降では動作しました。4.261 以前の 4.2x バージョンも動作するかもしれませんが未確認です。
それぞれの組み合わせで動作したサンプルを掲載します。
1.配列の入れ子
<mt:SetVar name="list[0]" value="0" />
<mt:SetVar name="list[1]" value="1" />
<mt:SetVar name="list[2]" value="2" />
<mt:SetVar name="foo[0]" value="$list" />
<mt:GetVar name="foo[0]" setvar="hoge" />
<mt:loop name="hoge">
<mt:GetVar name="__value__" />
</mt:loop>
2.配列とハッシュの入れ子
<mt:SetVar name="list[0]" value="0" />
<mt:SetVar name="list[1]" value="1" />
<mt:SetVar name="list[2]" value="2" />
<mt:SetVar name="foo{bar}" value="$list" />
<mt:GetVar name="foo{bar}" setvar="hoge"/>
<mt:loop name="hoge">
<mt:GetVar name="__value__" />
</mt:loop>
3.ハッシュと配列の入れ子
<$mt:SetVar name="week{mon}" value="Monday"$>
<$mt:SetVar name="week{tue}" value="Tuesday"$>
<$mt:SetVar name="week{wed}" value="Wednesday"$>
<$mt:SetVar name="week{thu}" value="Thursday"$>
<$mt:SetVar name="week{fri}" value="Friday"$>
<$mt:SetVar name="week{sat}" value="Saturday"$>
<$mt:SetVar name="week{sun}" value="Sunday"$>
<mt:SetVar name="list[0]" value="$week" />
<mt:GetVar name="list[0]" setvar="hoge" />
<mt:loop name="hoge">
<mt:GetVar name="__value__" />
</mt:loop>
4.ハッシュの入れ子
<mt:SetHashVar name="week">
<$mt:SetVar name="mon" value="Monday"$>
<mt:SetHashVar name="ampm">
<$mt:SetVar name="am" value="AM"$>
<$mt:SetVar name="pm" value="PM"$>
</mt:SetHashVar>
</mt:SetHashVar>
<mt:GetVar name="week{ampm}" setvar="foo" />
<mt:GetVar name="foo{am}" />
5.ポイント
入れ子の親データを取得する際は、GetVar(Var)タグに setvar モディファイアや SetVarBlock タグを組み合わせて、一旦他の変数に設定します。
<mt:GetVar name="foo[0]" setvar="hoge" />
次のような記述はできません。
<mt:GetVar name="foo[0][0]" />
6.制約
データを取得する際、mt:loop タグの入れ子は対応していないようです。
Posted by yujiro このページの先頭に戻る
- Movable Type の変数の初期化に関するまとめ
トラックバックURL
コメントする
greeting