カラーミーショップのデザイン・テンプレートの保守や拡張を楽するための方法。
基本的な考え方は、Smarty やカラーミーショップの機能を活用し、ソースコードの重複を減らすというものです。
カラーミーショップや Smarty は使い始めて間もないため、ミスや改善したほうが良い部分があれば、コメントお願いします。
フリーページの活用
フリーページは多くの場合、付加的なページ作成に用いられますが、外部テンプレートとして利用することもできます。
例えば、以下のようなフリーページを作ります。フリーページの番号は適宜読み替えてください。
<ul class="products">
<{foreach from=$product_array item=product}>
<li>
<a href="<{$product.link_url}>"><{$product.name}></a>
</li>
<{/foreach}>
</ul>
このフリーページを、以下のように別のページから呼び出します。
<{assign var="my_tpl" value=$file_name|regex_replace:"/\/(.*?)\\.tpl/":""}>
<h1>商品一覧</h1>
<{include file="$my_tpl/free1.tpl" product_array=$productlist}>
活用のためのポイント
-
フリーページ呼び出し元のソースコードの先頭に
<{assign var="my_tpl" value=$file_name|regex_replace:"/\/(.*?)\\.tpl/":""}>
を書き、呼び出し元で<{include file="$my_tpl/..."}>
と書くこと -
{include}
は、値を呼び出し先に渡せるということ (覚えておくと幸せになれること)
-
同じ1番目のフリーページでも、フリーページのファイル名は、テンプレートごとに変わります。
テンプレートの追加順によって、file:1/free1.tpl
やfile:2/free1.tpl
のように変化します。<{assign var="my_tpl" value=$file_name|regex_replace:"/\/(.*?)\\.tpl/":""}>
と書くことで、file:1
やfile:2
の部分を取り出すことが出来ます。取り出したファイル名を
{include file=}
に利用することで、
バックアップ等の目的でテンプレートをコピーした場合でも、テンプレートが正しく作用されます。 -
<{include file="$my_tpl/free1.tpl" product_array=$productlist}>
で、
$productlist
の値を、free1.tpl
へ$product_array
として渡すことが出来ます。これによって、おすすめ商品や新着商品の表示対応も
product_array
に渡す値を変えるだけで可能になります。