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
コメント