どうもうまくいかず何方かにアドバイスいただけると助かります
data/class/pages/products/LC_Page_Products_List.php
発送日目安に商品一覧ページで非表示用の「99」を追加して下記のように表示しないようにするよう記述してみました。
2.12のときは、下記のように簡単に出来ていたのですが
// ▼対象商品IDの抽出
// 商品検索条件の作成(未削除、表示)
$searchCondition['where'] = 'alldtl.del_flg = 0 AND alldtl.status = 1 AND alldtl.deliv_date_id ! = 99';
今回、2.13.2ですとかなり変わっていたのでよくわからなくなってしまいました。
一応下記のようにしてあり「// 在庫無し商品の非表示」のところで「
OR deliv_date_id = 99」を追加しました。
下記の内容では「99」と設定したものは非表示となりませんでした・・・
/**
* 検索条件のwhere文とかを取得
*
* @return array
*/
public function lfGetSearchCondition($arrSearchData)
{
$searchCondition = array(
'where' => '',
'arrval' => array(),
'where_category' => '',
'arrvalCategory' => array()
);
// カテゴリからのWHERE文字列取得
if ($arrSearchData['category_id'] != 0) {
list($searchCondition['where_category'], $searchCondition['arrvalCategory']) = SC_Helper_DB_Ex::sfGetCatWhere($arrSearchData['category_id']);
}
// ▼対象商品IDの抽出
// 商品検索条件の作成(未削除、表示)
$searchCondition['where'] = SC_Product_Ex::getProductDispConditions('alldtl');
if (strlen($searchCondition['where_category']) >= 1) {
$searchCondition['where'] .= ' AND EXISTS (SELECT * FROM dtb_product_categories WHERE ' . $searchCondition['where_category'] . ' AND product_id = alldtl.product_id)';
$searchCondition['arrval'] = array_merge($searchCondition['arrval'], $searchCondition['arrvalCategory']);
}
// 商品名をwhere文に
$name = $arrSearchData['name'];
$name = str_replace(',', '', $name);
// 全角スペースを半角スペースに変換
$name = str_replace(' ', ' ', $name);
// スペースでキーワードを分割
$names = preg_split('/ +/', $name);
// 分割したキーワードを一つずつwhere文に追加
foreach ($names as $val) {
if (strlen($val) > 0) {
$searchCondition['where'] .= ' AND ( alldtl.name ILIKE ? OR alldtl.comment3 ILIKE ?) ';
$searchCondition['arrval'][] = "%$val%";
$searchCondition['arrval'][] = "%$val%";
}
}
// メーカーらのWHERE文字列取得
if ($arrSearchData['maker_id']) {
$searchCondition['where'] .= ' AND alldtl.maker_id = ? ';
$searchCondition['arrval'][] = $arrSearchData['maker_id'];
}
// 在庫無し商品の非表示
if (NOSTOCK_HIDDEN) {
$searchCondition['where'] .= ' AND EXISTS(SELECT * FROM dtb_products_class WHERE product_id = alldtl.product_id AND del_flg = 0 AND (stock >= 1 OR stock_unlimited = 1)) OR deliv_date_id = 99 ';
}
// XXX 一時期内容が異なっていたことがあるので別要素にも格納している。
$searchCondition['where_for_count'] = $searchCondition['where'];
return $searchCondition;
}
EC-CUBEバージョン:2.13.2
PHP情報:5.3.28
DB情報:MySQL 5.6.13-log