標準では、管理画面の
コンテンツ管理 > おすすめ商品
の機能ですが、
専用項目として、もう1つほしかったので、
完コピすると、とってもめんどくさいので、
簡易的なものを作りました。
***
完全にコピーする方法は、こちらにおまかせするとして、
https://www.thank-u.net/blog/eccube/eccube_best5copy/
今回は、簡易版です。
なので、データベースは用いず、商品CDの配列を用います。
よって、
管理画面からの修正も、しません。
また、商品のコメントには、一覧-メインコメントを表示してます。
1. ブロックの追加
デザイン管理 > PC > ブロック より、新しいブロックを登録します。
テンプレートは、オリジナルの「おすすめ商品」より、
丸コピーし、
このままだと、オリジナルのおすすめを表示することになるので、
2箇所変更を加えます。
$arrBestProducts >> $arrBestProducts2
に、書き換えます。
2. データベースをいじる
phpMyAdminを開き、dtb_blockに、
上記で追加したブロックを探し、
php_pathに、「frontparts/bloc/recommend2.php」に変更します。
要は、先程追加した、ブロックは、
単にテンプレートなので、これに付随する専用のプログラムを作る
ということですね。
3. frontparts/bloc/recommend2.phpを作る
本来は、/data/class_exとかで、ゴリゴリするのですが、
無駄なので、1ファイルで。
オリジナルコードは、
/_data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php
から、丸コピーし、
/frontparts/block/reccomend.php
と、フュージョンしたものが、以下のコードで、
これを、/frontparts/block/reccomend2.phpとして、保存しています。
上記の通り、今回は、簡易版なので、
配列で必要な商品を列記しているのがキモですね。
<?php /* * This file is part of EC-CUBE * * Copyright(c) 2000-2014 LOCKON CO.,LTD. All Rights Reserved. * * http://www.lockon.co.jp/ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ require_once realpath(dirname(__FILE__)) . '/../../require.php'; //require_once CLASS_EX_REALDIR . 'page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Recommend_Ex.php'; require_once CLASS_EX_REALDIR . 'page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Ex.php'; /** * Recommend のページクラス. * * @package Page * @author EC-CUBE CO.,LTD. * @version $Id$ */ class LC_Page_FrontParts_Bloc_Recommend2 extends LC_Page_FrontParts_Bloc_Ex { /** * Page を初期化する. * * @return void */ public function init() { parent::init(); } /** * Page のプロセス. * * @return void */ public function process() { $this->action();
$this->sendResponse();
}
/**
* Page のアクション.
*
* @return void
*/
public function action()
{
// 基本情報を渡す
$objSiteInfo = SC_Helper_DB_Ex::sfGetBasisData();
$this->arrInfo = $objSiteInfo->data;
//おすすめ商品表示
$this->arrBestProducts2 = $this->lfGetRanking();
}
/**
* おすすめ商品検索.
*
* @return array $arrBestProducts 検索結果配列
*/
public function lfGetRanking()
{
// $objRecommend = new SC_Helper_BestProducts_Ex();
// おすすめ商品取得
// $arrRecommends = $objRecommend->getList(RECOMMEND_NUM);
//var_dump3($arrRecommends, __FILE__);
$response = array();
// if (count($arrRecommends) > 0) {
// 商品一覧を取得
$objQuery = SC_Query_Ex::getSingletonInstance();
$objProduct = new SC_Product_Ex();
/*
// where条件生成&セット
$arrProductId = array();
foreach ($arrRecommends as $key => $val) {
$arrProductId[] = $val['product_id'];
}
*/
// 2021-12-08 * ここで、表示する商品を定義。
$arrProductId = array(24, 25, 26, 27, 28);
#var_dump($arrProductId);
$arrProducts = $objProduct->getListByProductIds($objQuery, $arrProductId);
#var_dump($arrProducts);
// 税込金額を設定する
SC_Product_Ex::setIncTaxToProducts($arrProducts);
// おすすめ商品情報にマージ
// foreach ($arrRecommends as $key => $value) {
foreach ($arrProductId as $key => $value) {
// if (isset($arrProducts[$value['product_id']])) {
// $product = $arrProducts[$value['product_id']];
if (isset($arrProducts[$value])) {
$product = $arrProducts[$value];
if ($product['status'] == 1 && (!NOSTOCK_HIDDEN || ($product['stock_max'] >= 1 || $product['stock_unlimited_max'] == 1))) {
$response[] = $arrProducts[$value];
}
} else {
// 削除済み商品は除外
unset($arrRecommends[$key]);
}
}
// }
//var_dump($response);
return $response;
}
}
$objPage = new LC_Page_FrontParts_BLoc_Recommend2 ();
$objPage->blocItems = $params['items'];
$objPage->init();
$objPage->process();
加工の跡がわかるように、
不要なところは、コメントアウトで、残してあります。