E(2.13)】関連商品登録の商品検索項目にはカテゴリと商品名のみですが、ここに商品コード検索項目を追加します。
継承クラスにメソッドを追加
以下の継承クラスにメソッドを追加して下さい。
data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_ProductSelect_Ex.php
public function lfGetProducts(&$objDb)
{
$where = 'del_flg = 0';
$arrWhereVal = array();
/* 入力エラーなし */
foreach ($this->arrForm AS $key=>$val) {
if ($val == '') continue;
switch ($key) {
case 'search_name':
$where .= ' AND name ILIKE ?';
$arrWhereVal[] = "%$val%";
break;
case 'search_category_id':
list($tmp_where, $arrTmp) = $objDb->sfGetCatWhere($val);
if ($tmp_where != '') {
$where.= ' AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE ' . $tmp_where . ')';
$arrWhereVal = array_merge((array) $arrWhereVal, (array) $arrTmp);
}
break;
case 'search_product_code':
$where .= ' AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code LIKE ?)';
$arrWhereVal[] = "%$val%";
break;
default:
break;
}
}
$order = 'update_date DESC, product_id DESC ';
$objQuery =& SC_Query_Ex::getSingletonInstance();
// 行数の取得
$linemax = $objQuery->count('dtb_products', $where, $arrWhereVal);
$this->tpl_linemax = $linemax; // 何件が該当しました。表示用
// ページ送りの処理
$page_max = SC_Utils_Ex::sfGetSearchPageMax($_POST['search_page_max']);
// ページ送りの取得
$objNavi = new SC_PageNavi_Ex($_POST['search_pageno'], $linemax, $page_max, 'eccube.moveSearchPage', NAVI_PMAX);
$this->tpl_strnavi = $objNavi->strnavi; // 表示文字列
$startno = $objNavi->start_row;
// 取得範囲の指定(開始行番号、行数のセット)
$objQuery->setLimitOffset($page_max, $startno);
// 表示順序
$objQuery->setOrder($order);
// 検索結果の取得
// FIXME 商品コードの表示
$arrProducts = $objQuery->select('*', SC_Product_Ex::alldtlSQL(), $where, $arrWhereVal);
return $arrProducts;
}
テンプレートを修正
以下のようにテンプレートを修正して下さい。
data/Smarty/templates/admin/products/product_select.tpl
<tr>
<th>商品名</th>
<td><input type="text" name="search_name" value="<!--{$arrForm.search_name|h}-->" size="35" class="box35" /></td>
</tr>
<!-- 商品コード項目を追加 -->
<tr>
<th>商品コード</th>
<td><input type="text" name="search_product_code" value="<!--{$arrForm.search_product_code|h}-->" size="35" class="box35" /></td>
</tr>
<!-- /商品コード項目を追加 -->
以上です。
