PowerCMSのテンプレートタグのreplaceモディファイアでパターンに空白を指定した時の挙動
ハマったのでメモ。
次のような、mt:includeの出力結果をreplace結果で置き換えるコードがあるとする。
<mt:SetvarBlock name="htmlreplace1">hoge</mt:SetvarBlock>
<mt:SetvarBlock name="htmlreplace2">fuga</mt:SetvarBlock>
<mt:include module="wassyoi" blog_id="1"
replace="$htmlreplace1",""
replace="$htmlreplace2",""
>
またmt:incudeが参照してるテンプレートモジュールwassyoiのコードは次だとする。
<dl>
<dt>hoge fuga wassyoi</dt>
<dd>hoge fuga soiya</dd>
<dd>hoge fuga ossyoi</dd>
</dl>
運用の中で、変数htmlreplace1のパターンを置き換える必要が無くなったので、次のように該当変数の定義を消す。
<mt:SetvarBlock name="htmlreplace2">fuga</mt:SetvarBlock>
<mt:include module="wassyoi" blog_id="1"
replace="$htmlreplace1",""
replace="$htmlreplace2",""
>
すると、意図する結果は次の通りだが、
<dl>
<dt>hoge wassyoi</dt>
<dd>hoge soiya</dd>
<dd>hoge ossyoi</dd>
</dl>
上記の結果とならず、何も出力されない場合がある。※どのような条件でそうなるかまではぱっと分からず未調査。
この場合、「replace="$htmlreplace1",""」を消す事で一応解決する。