PHPUtilプラグイン(その14・配列/ハッシュの出力)

PHPUtilプラグインで配列やハッシュの要素をすべて出力するには、「MTPHPLoop」というテンプレートタグを使います。

1.MTPHPLoopタグの書き方

MTPHPLoopタグは、Movable Type標準のMTLoopタグと同じ書き方をします。

<mt:PHPLoop name="配列/ハッシュ名" sort_by="並べ替え方法" glue="区切り文字列">
  繰り返す処理
</mt:PHPLoop>

nameモディファイアで、出力する配列またはハッシュの名前を指定します。
sort_byモディファイアでは、以下のキーワードを指定して、並べ替えの方法を指定します。

キーワード並べ替え方法
key要素のキー(配列の場合は要素の番号)で並べ替える
value要素の値で並べ替える
numeric数値として並べ替える
reverse逆順に並べ替える

keyとvalueはどちらかを指定します。
numericとreverseは、key/valueのどちらかと併用することができます。
例えば、キーの逆順で並べ替えたい場合は、「sort_by="key reverse"」と書きます。

numericを指定した場合、要素のキー(または値)を数値として並べ替えます。
numericを指定しない場合は、文字列として辞書順に並べ替えます。
例えば、「10」と「2」は、数値として並べ替えると「2」の方が小さいですが、文字として並べ替えると「10」の方が小さいです。

2.MTPHPLoopタグのブロックの中で使える変数

MTPHPLoopタグのブロックの中では、Movable Type標準のMTForタグと同様に、以下の変数を使うことができます。
なお、「__counter__」等の前後の「__」は、半角のアンダースコア2つです。

変数名内容
__key__要素のキー(配列の場合は要素の番号)
__value__要素の値
__counter__繰り返し回数
__first__繰り返しの最初なら1、それ以外ではnull
__last__繰り返しの最後なら1、それ以外ではnull
__even__偶数回目の繰り返しなら1、それ以外ではnull
__odd__奇数回目の繰り返しなら1、それ以外ではnull

3.事例

例えば、ハッシュのキーと値を表(table要素)にして出力したいとします。
ハッシュはキーで並べ替えるとします。
また、表の奇数行目/偶数行目では、tr要素にそれぞれ「class="odd"」「class="even"」のクラスを指定したいとします。
この場合、以下のようにテンプレートを組みます。

<mt:PHPLoop name="x" sort_by="key">
  <mt:PHPIf name="__first__"><table></mt:PHPIf>
  <mt:PHPIf name="__odd__">
    <tr class="__odd__">
  <mt:PHPElse>
    <tr class="__even__">
  </mt:PHPIf>
      <td><$mt:PHPGetVar name="__key__"$></td><td><$mt:PHPGetVar name="__value__"$></td>
    </tr>
  <mt:PHPIf name="__last__"></table></mt:PHPIf>
</mt:PHPLoop>

1行目のMTLoopタグで、ハッシュxをキーで並べ替えて要素を順に出力します。
2行目では、変数__first__が真である(=繰り返しの最初である)時に、表の先頭の<table>タグを出力します。
3~7行目では、変数__odd__が真である(=奇数回目の繰り返しである)かどうかを判断し、そうであれば「class="odd"」のtr要素を出力し、そうでなければ「class="even"」のtr要素を出力します。
8行目では、ハッシュの各要素のキーと値を出力します。
そして、10行目では、変数__last__が真である(=繰り返しの最後である)時に、表の最後の</table>タグを出力します。

4.PHPUtilプラグイン関係の記事の一覧

PHPUtil関係のその他の記事は、以下のリンクから参照できます。