EC-CUBEの小技:カテゴリ検索結果ページに下の階層のカテゴリを表示

2013年9月26日 22:13
カテゴリ検索はどのECサイトでもありますが、階層が深さはそれなりに重要です。
ただ、ドロップダウンとか、アコーディオンとか、検索結果が引き継がないデザインが増えてきました。

なので、もっと詳しくし絞り込みたいときに、すぐ目の前に下の階層のカテゴリが表示されていると便利なわけです。
この記事は最終更新日から1年以上が経過しています。

list.phpにちょっと書き足し

/data/class/pages/products/LC_Page_Products_List.phpに以下を追加

104行目辺りから書き替え

        //表示条件の取得
		/*
        $this->arrSearchData = array(
            'category_id'   => $this->lfGetCategoryId(intval($this->arrForm['category_id'])),
            'maker_id'      => intval($this->arrForm['maker_id']),
            'name'          => $this->arrForm['name']
        );
		*/
		
		if(is_array($_GET['category_id'])){
			$arrCategory_id = array();
			if(preg_match("/^[0-9]+$/" , $_GET['category_id'][0])) array_push($arrCategory_id, $_GET['category_id'][0]);
			if(preg_match("/^[0-9]+$/" , $_GET['category_id'][1])) array_push($arrCategory_id, $_GET['category_id'][1]);
			if(preg_match("/^[0-9]+$/" , $_GET['category_id'][2])) array_push($arrCategory_id, $_GET['category_id'][2]);
			$this->arrSearchData = array(
				'category_id'   => $arrCategory_id
			);
		}else{
			$this->arrSearchData = array(
				'category_id'   => $this->lfGetCategoryId(intval($this->arrForm['category_id'])),
				'maker_id'      => intval($this->arrForm['maker_id']),
				'name'          => $this->arrForm['name']
			);
		}
        $this->orderby = $this->arrForm['orderby'];

		// サブカテゴリリストを取得
		$this->arrSubCatList = $this->getSubCatList($this->arrSearchData['category_id']);

最後尾に追加

	/*
	 *  子カテゴリ一覧を取得
	 *
	 *  @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;
	}	

tplに表示するコードを書いて完了

/data/Smarty/templates/sphone/products/list.tplに以下を追加

<!--{if $arrSubCatList|@count > 0}-->
<section class="under_category">
	<div class="title_box_sub clearfix">
	    <h2>下層カテゴリ一覧</h2>
	      <span class="b_expand"><img src="<!--{$TPL_URLPATH}-->img/common/btn_minus.png" onclick="fnSubToggle($('#sub_areaxx'), this);" alt=""></span>
	 </div>
	    <div id="sub_areaxx" class="toggle_block">
		<ul>
	    <!--{foreach from=$arrSubCatList item=category}-->
	    <li>
	        <a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$category.category_id|h}-->"><!--{$category.category_name|h}--></a>&nbsp;
	    </li>
	    <!--{/foreach}-->
		</ul>
	    </div>
</section>
<!--{/if}-->

ブログ運営

株式会社ちょもらんま

https://qomolangma.jp