■商品マスタの商品公開ステータスを一括操作する
商品公開ステータスを一括で操作できるようにカスタマイズする
レビューの表示ステータスの一括更新と要領は同じ
手順: ビューファイル『index.php』に更新ボタンと公開ステータスを選択するラジオボタンを用意する 拡張クラスの商品マスタファイル『LC_Page_Admin_Products_Ex.php』に処理を実装する
■ビューファイル『index.php』に更新ボタンと公開ステータスを選択するラジオボタンを用意する
<a class="btn-tool" href="javascript:;" onclick="eccube.setModeAndSubmit('csv','',''); return false;">CSV ダウンロード</a>
<a class="btn-tool" href="../contents/csv.php?tpl_subno_csv=product">CSV 出力項目設定</a>
<a class="btn-tool" href="javascript:;" onclick="eccube.setModeAndSubmit('set_price_update','',''); return false;">価格を一括更新</a>
<a class="btn-tool" href="javascript:;" onclick="eccube.setModeAndSubmit('set_stock_update','',''); return false;">在庫を一括更新</a>
<!--公開ステータスを一括更新するボタンを設置-->
<a class="btn-tool" href="javascript:;" onclick="eccube.setModeAndSubmit('change_status','',''); return false;">公開ステータスを一括更新</a>
・・・
<!--{* 表示 *}-->
<!--{assign var=key value=$arrProducts[cnt].status}-->
<td class="menu" rowspan="2">
<input type="radio" name="status_<!--{$arrProducts[cnt].product_id}-->" value="1" <!--{if $arrProducts[cnt].status eq 1}-->checked<!--{/if}-->>公開
<br>
<input type="radio" name="status_<!--{$arrProducts[cnt].product_id}-->" value="2" <!--{if $arrProducts[cnt].status eq 2}-->checked<!--{/if}-->>非公開
</td>
■拡張クラスの商品マスタファイル『LC_Page_Admin_Products_Ex.php』に処理を実装する
/**
* Page のアクション.
*
* @return void
*/
public function action()
{
parent::action();
switch ($this->getMode()) {
case 'change_status':
$arr_products = array();
foreach($_POST as $key=>$data)
{
$id = preg_replace('/status_/i', '', $key);
// 在庫情報を取得
if(preg_match('/^[0-9]+$/i', $id, $matches))
{
$arr_products[$id] = $data;
}
}
// 在庫情報を一括更新
$this->changeStatus($arr_products);
break;
}
}
/**
* 商品表示ステータス一括更新
*
* @param string なし
* @param array なし
* @return void
*/
public function changeStatus($__arr_status)
{
foreach($__arr_status as $id=>$value)
{
$objQuery =& SC_Query_Ex::getSingletonInstance();
$sqlval['status'] = $value;
$objQuery->update('dtb_products', $sqlval, 'product_id = ?', array($id));
}
}
※一覧画面のレイアウトが崩れた場合はテキストフィールドを
小さくして調整をする
<!--価格のテキストフィールドの幅を設定-->
<input type="text" style="width:60px;" name="price_<!--{$arrProducts[cnt].product_id}-->" value="<!--{$arrProducts[cnt].price02_min}-->">
<!--在庫のテキストフィールドの幅を設定-->
<input type="text" style="width:60px;" name="stock_<!--{$arrProducts[cnt].product_id}-->" value="<!--{if $arrProducts[cnt].stock_unlimited_min}-->無制限<!--{else}--><!--{$arrProducts[cnt].stock_min|number_format}--><!--{/if}-->">
