見出し画像

PowerCMS X でカンマ区切りのテキストを配列にする

例えば以下のカンマ区切りテキストがあるとします。

Single,Multi,Unlimited

下記のように変数へセットしてもテキストとして扱われます。

<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]のように数字を増やせば指定した順番の値が出力できます。

いいなと思ったら応援しよう!