action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { // 基本情報を渡す $objSiteInfo = SC_Helper_DB_Ex::sfGetBasisData(); $this->arrInfo = $objSiteInfo->data; //おすすめ商品表示 $this->arrBestProducts = $this->lfGetRanking(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } /** * おすすめ商品検索. * * @return array $arrBestProducts 検索結果配列 */ function lfGetRanking() { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objProduct = new SC_Product_Ex(); // おすすめ商品取得 $col = 'T1.best_id, T1.category_id, T1.rank, T1.product_id, T1.title, T1.comment, T1.create_date, T1.update_date'; $table = 'dtb_best_products as T1 INNER JOIN dtb_products as T2 ON T1.product_id = T2.product_id'; $where = 'T1.del_flg = 0 and T2.status = 1'; if (NOSTOCK_HIDDEN) { $where .= ' AND EXISTS(SELECT * FROM dtb_products_class WHERE product_id = T1.product_id AND dtb_products_class.del_flg = 0 AND (stock >= 1 OR stock_unlimited = 1))'; } $objQuery->setOrder('T1.rank'); $objQuery->setLimit(RECOMMEND_NUM); $arrBestProducts = $objQuery->select($col, $table, $where); $objQuery =& SC_Query_Ex::getSingletonInstance(); if (count($arrBestProducts) > 0) { // 商品一覧を取得 // where条件生成&セット $arrProductId = array(); $where = 'product_id IN ('; foreach ($arrBestProducts as $key => $val) { $arrProductId[] = $val['product_id']; } // 取得 $arrProductList = $objProduct->getListByProductIds($objQuery, $arrProductId); // おすすめ商品情報にマージ foreach ($arrBestProducts as $key => $value) { $arrRow =& $arrBestProducts[$key]; if (isset($arrProductList[$arrRow['product_id']])) { $arrRow = array_merge($arrRow, $arrProductList[$arrRow['product_id']]); } else { // 削除済み商品は除外 unset($arrBestProducts[$key]); } } } return $arrBestProducts; } }