[ケーススタディ]PowerCMS X のsplit属性とハッシュ
読んでも?な感じがしなくもないが、かなりハマったのでメモ。
次の様なコードを書いて、
<mt:setvarblock name="source__url">
/aaa/bbb.html
/ccc/ddd.html
</mt:setvarblock>
<mt:var name="source__url" regex_replace="'/\r?\n/g',','" split="," setvar="arr__url" />
<mt:loop name="arr__url">
<mt:setvar name="hash__result" key="$__value__" value="1" />
</mt:loop>
<pre>
<mt:loop name="hash__result">
<mt:var name="__key__" /> : <mt:var name="__value__" />
</mt:loop>
</pre>
次の結果を期待する。
/aaa/bbb.html : 1
/ccc/ddd.html : 1
しかし、結果は何も表示されず。
確認したところ、次のようにすると意図する表示となった。
<mt:sethashvars name="hash__url">
1=/aaa/bbb.html
2=/ccc/ddd.html
</mt:sethashvars>
<mt:loop name="hash__url">
<mt:setvar name="hash__result" key="$__value__" value="1" />
</mt:loop>
<pre>
<mt:loop name="hash__result">
<mt:var name="__key__" /> : <mt:var name="__value__" />
</mt:loop>
</pre>
以上より、split属性で配列にしたものは、mt:loopのようなハッシュを扱うタグでは上手く動かないのかもしれない。
(23/02/16 追記)
※コードのregex_replaceの値に誤りあったので修正しました。
※変数source__urlの値に余分な改行ある為、と指摘いただきました。Thanks @junnama @_hideki_a !