カラーミーショップのデザイン・テンプレートの保守や拡張を楽するための方法。
基本的な考え方は、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に渡す値を変えるだけで可能になります。