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

この記事は最終更新日から1年以上が経過しています。
カテゴリ検索はどのECサイトでもありますが、階層が深さはそれなりに重要です。
ただ、ドロップダウンとか、アコーディオンとか、検索結果が引き継がないデザインが増えてきました。

なので、もっと詳しくし絞り込みたいときに、すぐ目の前に下の階層のカテゴリが表示されていると便利なわけです。

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}-->

Be the first to comment

Leave a Reply

Your email address will not be published.


*


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください