この記事の内容は、時間経過およびプログラムやシステムのバージョン アップなどの事情によって、現状に正しくそぐわない内容、またはそれどころか、場合によっては問題を引き起こす可能性があります。参考程度に留め、関連記事やアーカイブを検索してみてください。
twitter - @riatw Kentaro Suzuki
MTで、Hashvar使っている際に、配列に○○が含まれているか、とかっていう条件判定ってMTIFで書く方法ってありますか?in_array()的な。
<MTIf> 単体での判断はできません。<MTLoop> を使って値またはキーでぐるっと回してやって、そのループ内で判断してやる必要があります。しかし、変数のサイズが大きくなると、ただでさえ遅い再構築で爆死してしまうので、Perl レベルで判断するのがパフォーマンス的には最適かと。というわけで、プラグインにしてみました。
<MTSetVar name="foo[0]" value="123">
<MTSetVar name="foo[1]" value="456">
<MTSetVar name="foo[2]" value="789">
<MTIsInArray name="foo" value="456">
index = <MTVar name="__index__">
<MTElse>
foo に 456 はありません。
</MTIsInArray>
<MTSetVar name="bar{a}" value="123">
<MTSetVar name="bar{b}" value="456">
<MTSetVar name="bar{c}" value="789">
<MTIsInHash name="bar" value="456">
key = <MTVar name="__key__">
<MTElse>
bar に 456 はありません。
</MTIsInArray>
MTIsInArray / MTIsInHashname で指定された配列変数またはハッシュ変数に、value で指定された値が含まれるか否かを判断する条件タグです。配列変数が value を持つ場合、真となり、変数 __index__ に配列の添字を代入します。ハッシュ変数が value を持つ場合、真となり、変数 __key__ にハッシュキーを代入します。v0.01) ... 公式リリースされた最新版で、バグ報告やサポートの対象になります。通常はこちらをご利用ください。master) ... バグ修正や機能追加など開発途中のバージョンです。開発中の新機能などをいち早く利用できますが、新しいバグが生まれていたり、テストが不十分な場合があります。