[EC-CUBE 2.12.4] 管理画面の商品検索項目にメーカーを追加
今回は以下のように商品マスターで商品検索する際に、メーカーで検索できるようにしてみます。

1.data/Smarty/templates/admin/products/index.tpl でメーカー欄を追加する。
<tr>
<th>メーカー</th>
<td colspan="3">
<!--{assign var=key value="search_maker_id"}-->
<span class="attention"><!--{$arrErr[$key]}--></span>
<select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
<option value="">選択してください</option>
<!--{html_options options=$arrMaker selected=$arrForm[$key].value}-->
</select>
</td>
</tr>
2.data/class/pages/admin/products/LC_Page_Admin_Products.php の Init でコード追加。
$masterData = new SC_DB_MasterData_Ex();
$this->arrPageMax = $masterData->getMasterData('mtb_page_max');
$this->arrDISP = $masterData->getMasterData('mtb_disp');
$this->arrSTATUS = $masterData->getMasterData('mtb_status');
$this->arrPRODUCTSTATUS_COLOR = $masterData->getMasterData('mtb_product_status_color');
//以下の行を追加
$this->arrMaker = SC_Helper_DB_Ex::sfGetIDValueList('dtb_maker', 'maker_id', 'name');
3.同じくdata/class/pages/admin/products/LC_Page_Admin_Products.php の lfInitParam でコード追加。
// 検索条件
$objFormParam->addParam('商品ID', 'search_product_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('商品コード', 'search_product_code', STEXT_LEN, 'KVna', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('商品名', 'search_name', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('カテゴリ', 'search_category_id', STEXT_LEN, 'n', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('種別', 'search_status', INT_LEN, 'n', array('MAX_LENGTH_CHECK'));
// 以下の行を追加
$objFormParam->addParam('メーカー', 'search_maker_id', STEXT_LEN, 'n', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
4.同じくdata/class/pages/admin/products/LC_Page_Admin_Products.php の buildQuery でコード追加。
// 商品ステータス
case 'search_product_statuses':
$arrPartVal = $objFormParam->getValue($key);
$count = count($arrPartVal);
if ($count >= 1) {
$where .= ' '
. 'AND product_id IN ('
. ' SELECT product_id FROM dtb_product_status WHERE product_status_id IN (' . SC_Utils_Ex::repeatStrWithSeparator('?', $count) . ')'
. ')';
$arrValues = array_merge($arrValues, $arrPartVal);
}
break;
// メーカー(以下の行を追加)
case 'search_maker_id':
$where.= ' AND maker_id = ?';
$arrValues = $objFormParam->getValue($key);
break;

