カラーミーショップのカスタマイズに便利なSmartyを学ぶ (1/2)
カラーミーショップのカスタマイズに便利なSmartyを学ぶ (2/2)
カラーミーショップでは、Smartyと呼ばれるテンプレートエンジンが使用されています。
Smartyでやれること
・独自タグでデータ出力しページ上に表示させる (商品名や価格など。基本中の基本)
・デザインにより近いところでの、条件分岐やループ(JavaScriptでも条件分岐やループはできるがデザインが大変)
・正規表現と置換(regex_replace)が強力
たとえば、商品名を表示させる独自タグ(<{$product.name}>)には、「商品名への付加画像設定」で画像(New画像など)を指定した場合には、HTMLのimgタグがもれなくついてきます。
商品名のみが必要な場合は、
<{$product.name|regex_replace:'/\\<\\/?[^\\>]*\\>/':''}>とすると、不要なタグ部分をのぞいて取り出せます(商品名によっては必要な部分までとりのぞいてしまいますが)。
そのほか、特定の文字列以降をごっそり消してしまうこともできます(例の場合は■以降を空の文字列に置換している)。
カラーミーには大・小2カテゴリーしかありませんので、商品名にカテゴリー要素を組み込んでおき、正規表現で上手に取り出すという使い方もできます。
<{$product.name|regex_replace:'/■.+/':''}>
Smartyの、あくまでサンプル
・$smarty リクエスト変数(たとえば、URLの”cid=”のあとの文字)などを参照する。例の場合は、商品検索時のカテゴリidを表示します。
<{$smarty.get.cid}>・assign テンプレート変数を割り当てる。
<{assign var="name" value=$product.name|regex_replace:'/\\<\\/?[^\\>]*\\>/':''}>これでも同じこと(参考)
<{$name|regex_replace:'/■/':'☆'}>
<{assign var="name" value=$product.name|regex_replace:'/\\<\\/?[^\\>]*\\>/':''|regex_replace:'/■/':'☆'}>・fetch コンテンツを読む。ページを読んで、必要な情報を切り出すことも可能です。
<{$name}>
<{fetch file="http://~/?mode=srh&cid=&keyword=hoge" assign="res"}>・strip_tags 変数の修飾子。あとから気づいたんですが、HTMLタグを取り除く機能は、わざわざ正規表現を使用して置換せずとも、はじめからついています(どう考えてもこっちのほうが簡単)。
<{$res|regex_replace:'/\\<\\/?[^\\>]*\\>/':''}>
例の場合は、商品名からHTMLタグを取り除いています。商品登録時に、「商品名への付加画像設定」をしていると、imgタグがつきます(たとえば、New画像など)。
<{$product.name|strip_tags}>上記の場合はHTMLタグをひとつの空白に置き換えています。
さらに、別の文字列や空白なしにすることもできます(:以降で設定、下例では空白なし)。
<{$product.name|strip_tags:''}>
【参照リンク】
・Smarty
【関連記事】
・Smartyサンプル 2
・ツィートする 2