PowerCMS X でカンマ区切りのテキストを配列にする
例えば以下のカンマ区切りテキストがあるとします。
下記のように変数へセットしてもテキストとして扱われます。
<mt:SetVarBlock name="license_type">Single,Multi,Unlimited</mt:SetVarBlock>
このように1行増やすとうまくいきます。
<mt:SetVarBlock name="license_type">Single,Multi,Unlimited</mt:SetVarBlock>
<mt:var name="license_type" split="," setvar="license_type">
split で配列にできます。
mt:var で値を取得しつつ、split が「,」の箇所で分割して配列にし、再度 setvar で変数(配列)にセットします。
完成コードです。
<mt:SetVarBlock name="license_type">Single,Multi,Unlimited</mt:SetVarBlock>
<mt:var name="license_type" split="," setvar="license_type">
<mt:loop name="license_type" glue="/">
<mt:var name="__value__">
</mt:loop>
結果
Single / Multi / Unlimited
glue はループの中の値に区切り文字を指定するモディファイアです。
他の方法としては、function="push" があります。push すると配列になります。
<mt:SetVarBlock name="license_type" function="push">Single</mt:SetVarBlock>
<mt:SetVarBlock name="license_type" function="push">Multi</mt:SetVarBlock>
<mt:SetVarBlock name="license_type" function="push">Unlimited</mt:SetVarBlock>
<mt:loop name="license_type" glue="|">
<mt:var name="__value__">
</mt:loop>
結果
Single | Multi | Unlimited
SetVarBlock ではなく、SetVar でも配列にできます。
<mt:SetVar name="license_type" value="Single" function="push">
<mt:SetVar name="license_type" value="Multi" function="push">
<mt:SetVar name="license_type" value="Unlimited" function="push">
<mt:loop name="license_type" glue="|">
<mt:var name="__value__">
</mt:loop>
結果
Single | Multi | Unlimited
配列の値は loop を使わずに、n 番目を取り出すことができます。
<mt:Var name="license_type[0]">
結果
Single
[0] は配列の先頭の値を返し、[1]、[2]のように数字を増やせば指定した順番の値が出力できます。