10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

カラーミーショップのデザイン・テンプレートで楽するための方法 (ソースコードの重複を減らす)

Last updated at Posted at 2014-05-11

カラーミーショップのデザイン・テンプレートの保守や拡張を楽するための方法。
基本的な考え方は、Smarty やカラーミーショップの機能を活用し、ソースコードの重複を減らすというものです。

カラーミーショップや Smarty は使い始めて間もないため、ミスや改善したほうが良い部分があれば、コメントお願いします。

フリーページの活用

フリーページは多くの場合、付加的なページ作成に用いられますが、外部テンプレートとして利用することもできます。

例えば、以下のようなフリーページを作ります。フリーページの番号は適宜読み替えてください。

フリーページ1
<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}>

活用のためのポイント

  1. フリーページ呼び出し元のソースコードの先頭に <{assign var="my_tpl" value=$file_name|regex_replace:"/\/(.*?)\\.tpl/":""}> を書き、呼び出し元で <{include file="$my_tpl/..."}> と書くこと

  2. {include} は、値を呼び出し先に渡せるということ (覚えておくと幸せになれること)


  1. 同じ1番目のフリーページでも、フリーページのファイル名は、テンプレートごとに変わります。
    テンプレートの追加順によって、file:1/free1.tplfile:2/free1.tpl のように変化します。

    <{assign var="my_tpl" value=$file_name|regex_replace:"/\/(.*?)\\.tpl/":""}>
    と書くことで、file:1file:2 の部分を取り出すことが出来ます。

    取り出したファイル名を {include file=} に利用することで、
    バックアップ等の目的でテンプレートをコピーした場合でも、テンプレートが正しく作用されます。

  2. <{include file="$my_tpl/free1.tpl" product_array=$productlist}> で、
    $productlist の値を、free1.tpl$product_array として渡すことが出来ます。

    これによって、おすすめ商品や新着商品の表示対応も product_array に渡す値を変えるだけで可能になります。

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?