[ケーススタディ]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 !

関連するタグ

PowerCMS X 3.084