変数の値を部分一致でフィルタリング

カラーミーショップには多くの変数が用意されています。たとえばテンプレートに<{ $shop_name }>と記述すれば、ショップ名が出力されます。

これを完全一致で調べるのであれば、<{ if $shop_name == ’ミフネWEB’ }>という条件で問題ないですが、’ミフネ’という文字が含まれているかどうかは調べられません。

このような、部分一致で条件分岐を行いたいときの書き方をご紹介します。

変数から特定の言葉を消して値が変わるかどうか

見出しが全てですが実例を交えて説明していきます。

変数から特定の文字を削除するにはreplace というフィルターを使用します。replaceの具体的な説明については別記事で説明いたします。

<{* $shop_name から「ミフネ」の文字を消す *}>
<{$shop_name|replace:"ミフネ":""}> <!-- 「WEB」が出力される--> 

もし、<{ $shop_name }>にミフネという文字が含まれていなければ変数の値は変わりません。

つまり、

<{ if $shop_name|replace:"一致するか調べたいワード":"" != $shop_name }

という条件にすると、部分一致で条件分岐を行うことができます。

検索したいワードは変数でも可能

「一致するか調べたいワード」の部分は変数でも可能です。

仮に「ショップ名に店長名が含まれているかどうか」という条件であれば、

<{ if $shop_name|replace:$manager_name:"" != $shop_name }>

という書き方となります。

smarty
シェアする
タイトルとURLをコピーしました