Labo

[EC-CUBE 2.12.4] 商品一覧ページで特定のカテゴリを含む商品を非表示にする

2013年06月09日 / 投稿者名:fukap


とりあえず「最下層の category_id が 5 の商品は商品一覧で表示したくない!」という前提で、
カスタマイズをしてみたいと思います。

 

data/class/pages/products/LC_Page_Products_List.php の lfGetProductsList メソッドで、
「category_id=5 を含む商品情報を配列から削除」以下の6行のコードを追加。

// 表示すべきIDとそのIDの並び順を一気に取得
$arrProductId = $objProduct->findProductIdsOrder($objQuery, array_merge($searchCondition['arrval'], $arrOrderVal));

$objQuery =& SC_Query_Ex::getSingletonInstance();
$arrProducts = $objProduct->getListByProductIds($objQuery, $arrProductId);

// category_id=5 を含む商品情報を配列から削除
foreach($arrProducts as $arrProduct){
    $arrCategoryId = SC_Helper_DB_Ex::sfGetCategoryId($arrProduct['product_id']);
    if(in_array(5, $arrCategoryId)){
        unset($arrProducts[$arrProduct['product_id']]);
    }
}

// 規格を設定
$objProduct->setProductsClassByProductIds($arrProductId);
$arrProducts['productStatus'] = $objProduct->getProductStatus($arrProductId);
return $arrProducts;

in_array の第一引数を適当に変えれば、任意のカテゴリIDで非表示にできると思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。