EC-CUBE プラグインを使わず、商品一覧ページにフリーエリアを設置

Smarty

EC-CUBEで商品カテゴリ毎に自由なコンテンツを入れたい場合、コンパネで更新ができたりする便利なプラグインがありますが、なんらかの事情で使いたくないとき。
または微妙にやりたいことが違うときに手っ取り早くフリーエリア用のテンプレートを表示させる方法です。

テンプレートを自分で作ってアップロードするので、開発になれてない人には更新がやや面倒ですが、細かなカスタマイズをしたいときに便利かもしれません。

LC_Page_Products_List_Ex.php

class LC_Page_Products_List_Ex extends LC_Page_Products_List
{
    ....

    public function action()
    {
        parent::action();

        $objView = new SC_SiteView_Ex();
        
        //配列でcategory_idがGETされていると仮定
        foreach ($_GET['category_id'] as $k => $category_id) {
            $file = TEMPLATE_REALDIR . 'frontparts/bloc/free/'.$category_id.'.tpl';
            if(is_file($file)) {
                $this->freeItems[] = $objView->fetch($file);
            }
        }
    }
}

やっていることは、category_idと同じファイル名のテンプレートが実在してたらassignしてしまおうと言う、単純な理屈で動きます。
テンプレートが存在するかの評価にはSmartyの場合、本来はis_fileではなく、テンプレートの存在をチェックするtemplateExists()関数を使います。

参考

カテゴリ毎(商品一覧ページ)フリーエリア追加プラグイン
http://www.ec-cube.net/products/detail.php?product_id=505

templateExists() ? 指定したテンプレートが存在するかどうかをチェックします。
http://www.smarty.net/docs/ja/api.template.exists.tpl

コメント

タイトルとURLをコピーしました