■商品マスタの商品公開ステータスを一括操作する
商品公開ステータスを一括で操作できるようにカスタマイズする
レビューの表示ステータスの一括更新と要領は同じ
手順: ビューファイル『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}-->">