[EC-CUBE 2.11.2] 商品一覧ページに、サブカテゴリを表示させたい
EC-CUBEにはデフォルトで商品カテゴリーブロックというものがあるので、あんまり需要がないかなーとは思いましたが、
商品一覧ページの見出し(「食品」や「なべ」などカテゴリ名が表示される場所)の下あたりにサブカテゴリを表示させてみました。
1.data/class/pages/products/LC_Page_Products_List.php の 130行目あたりに以下のコードを記述。
// サブカテゴリリストを取得
$this->arrSubCatList = $this->getSubCatList($this->arrSearchData['category_id']);
2.data/class/pages/products/LC_Page_Products_List.php の 末尾に以下の関数を記述。
/*
* 子カテゴリ一覧を取得
*
* @param int $category_id 該当カテゴリID
* @return Array $arrSubCatList 子カテゴリID
*/
function getSubCatList($category_id){
$arrRet = SC_Helper_DB_Ex::sfGetCatTree();
$cnt = 0;
foreach($arrRet as $key => $val){
if($val['parent_category_id'] == $category_id){
$arrSubCatList[$cnt]['category_id'] = $val['category_id'];
$arrSubCatList[$cnt]['category_name'] = $val['category_name'];
$cnt++;
}
}
return $arrSubCatList;
}
今回、SC_Helper_DB_Ex::sfGetCatTree() を引数なしでコールしてるんですが、
本来、この関数は第一引数として $parent_category_id を引き渡さないといけないはずです。
でもなぜか引数を与えても与えなくても同じ結果が返ってくる。。なんでだろう。
ちょっとここの疑問はまたの機会に調べたいと思います。
3.data/Smarty/templates/default/products/list.tpl の 88行目あたりに以下のコードを記述
<!--{* 下位カテゴリ *}-->
<!--{if $arrSubCatList|@count > 0}-->
下位カテゴリ:
<!--{foreach from=$arrSubCatList item=category}-->
<a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$category.category_id|h}-->"><!--{$category.category_name|h}--></a>
<!--{/foreach}-->
<!--{/if}-->

