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",""」を消す事で一応解決する。

関連するタグ

PowerCMS4.44