この記事の内容は、時間経過およびプログラムやシステムのバージョン アップなどの事情によって、現状に正しくそぐわない内容、またはそれどころか、場合によっては問題を引き起こす可能性があります。参考程度に留め、関連記事やアーカイブを検索してみてください。
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
/ MTIsInHash
name
で指定された配列変数またはハッシュ変数に、value
で指定された値が含まれるか否かを判断する条件タグです。配列変数が value
を持つ場合、真となり、変数 __index__
に配列の添字を代入します。ハッシュ変数が value
を持つ場合、真となり、変数 __key__
にハッシュキーを代入します。v0.01
) ... 公式リリースされた最新版で、バグ報告やサポートの対象になります。通常はこちらをご利用ください。master
) ... バグ修正や機能追加など開発途中のバージョンです。開発中の新機能などをいち早く利用できますが、新しいバグが生まれていたり、テストが不十分な場合があります。