« Android携帯の買い換えを検討中 | トップページ | ダービーで感じたこと »

EC-CUBEで特定カテゴリを非表示にする

EC-CUBEで特定のカテゴリをサイドメニュー上で表示しないと言うことを実施したのでメモ。

検索でカテゴリリストに非表示させる方法はあったんですが、「検索ボックス」内に表示されてしまうので、それも対応しました。

まず、カテゴリリストに表示させない方法。
1.カテゴリを作る
2.そのカテゴリ番号を利用して
「デザイン管理」→「ブロック編集」→「カテゴリ」でソースを表示
3.<li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> onmark<!--{/if}-->"><a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a>
この行の上部に
<!--{if $arrTree[cnt].category_id != [該当カテゴリID]}-->
行の下部に
<!--{/if}-->

これで、カテゴリリストへの表示はなくなる。

問題は検索ボックス。
テンプレートの修正ではできない。

まず、data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_SearchProducts.php のprocessの中をコピーして、
data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_SearchProducts_Ex.php のprocessの中にペーストする。
それから、$arrRet = $objDb->sfGetCategoryList('', true, ' ');
と書いてある行の第一パラメータに
T1.category_id <> [該当カテゴリID]
を入れてあげる。
これで、検索ボックス内からもカテゴリが選べなくなる。

但し、全商品を表示したり、商品名(の一部)で検索した際はその商品は表示される。
もちろん、非表示にしただけなので、商品表示時に出てくるカテゴリのリンクをクリックしても有効になっている。

« Android携帯の買い換えを検討中 | トップページ | ダービーで感じたこと »

コメント

消えました!
これ、複数のIDを消す場合はどのようにすればよろしいですか?

亀レスで、すみません。
複数のIDということは、複数のカテゴリということですか?

普通に、ANDやORを使って対応できると思います。

こういう書き込み助かります!
めっちゃ救われました。 
ありがとうございました。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/37957/54662417

この記事へのトラックバック一覧です: EC-CUBEで特定カテゴリを非表示にする:

« Android携帯の買い換えを検討中 | トップページ | ダービーで感じたこと »