Movable Type の配列とハッシュの入れ子

Movable Type の配列とハッシュの入れ子

Posted at December 15,2009 12:55 AM
Tag:[MovableType, VariableTag]

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 タグの入れ子は対応していないようです。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

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

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