■レビュー管理の表示ステータスを一括操作する
レビューを表示させるためには管理画面のレビュー管理から
表示ステータスを表示に変えてやる必要がある
ただ、一件ずつしか処理出来ないのでレビューが多くなると表示処理が
非常に面倒くさくなる
そこでレビュー管理の一覧から表示/非表示をラジオボタンで選択して
一括更新ボタンをクリックしてまとめて更新出来るようにする
手順: ビューファイル『review.php』ファイルに更新ボタンとラジオボタン、コメントを表示させる 拡張クラスのレビューファイル『LC_Page_Admin_Products_Review_Ex.php』に処理を実装する
■ビューファイル『review.php』ファイルに更新ボタンとラジオボタン、コメントを表示させる
<!--{if $smarty.const.ADMIN_MODE == '1'}--> <a class="btn-normal" href="javascript:;" onclick="eccube.setModeAndSubmit('delete_all','',''); return false;"><span>検索結果を全て削除</span></a> <!--{/if}--> <a class="btn-normal" href="javascript:;" onclick="eccube.setModeAndSubmit('csv','',''); return false;"><span>CSV ダウンロード</span></a> <!-- 一括更新ボタンを追加--> <a class="btn-normal" href="javascript:;" onclick="eccube.setModeAndSubmit('change_status','',''); return false;"><span>表示ステータス一括更新</span></a> ・・・・ <!--検索結果表示テーブル--> <table id="products-review-result" class="list"> <tr> <th>投稿日</th> <th>投稿者名</th> <th>商品名</th> <th>おすすめレベル</th> <!-- コメントタイトルヘッダを追加 --> <th>コメント</th> <th>表示・非表示</th> <th class="edit">編集</th> <th class="delete">削除</th> </tr> <!--{section name=cnt loop=$arrReview}--> <tr> <td><!--{$arrReview[cnt].create_date|h|sfDispDBDate}--></td> <td><!--{$arrReview[cnt].reviewer_name|h}--></td> <td><!--{$arrReview[cnt].name|h}--></td> <!--{assign var=key value="`$arrReview[cnt].recommend_level`"}--> <td><!--{$arrRECOMMEND[$key]|h}--></td> <!-- コメントタイトルデータを追加 --> <td><!--{$arrReview[cnt].comment|h}--></td> <td class="menu"> <!-- 表示ステータスをラジオボタンに変更 --> <input type="radio" name="status_<!--{$arrReview[cnt].review_id|h}-->" value="1" <!--{if $arrReview[cnt].status eq 1}-->checked<!--{/if}-->>表示 <br /> <input type="radio" name="status_<!--{$arrReview[cnt].review_id|h}-->" value="2" <!--{if $arrReview[cnt].status eq 2}-->checked<!--{/if}-->>非表示 </td> <td class="menu"><a href="javascript:;" onclick="eccube.changeAction('./review_edit.php'); eccube.setModeAndSubmit('','review_id','<!--{$arrReview[cnt].review_id}-->'); return false;">編集</a></td> <td class="menu"><a href="javascript:;" onclick="eccube.setModeAndSubmit('delete','review_id','<!--{$arrReview[cnt].review_id}-->'); return false;">削除</a></td> </tr> <!--{/section}--> </table> <!--検索結果表示テーブル-->
■拡張クラスのレビューファイル『LC_Page_Admin_Products_Review_Ex.php』に処理を実装する
/** * Page のアクション. * * @return void */ public function action() { parent::action(); switch ($this->getMode()) { case 'change_status': $arr_status = array(); foreach($_POST as $key=>$data) { $id = ''; // 表示ステータス情報を取得 if(is_numeric($id = preg_replace('/status_/i', '', $key))) { $arr_status[$id] = $data; } } // 表示ステータス一括更新処理 $this->changeStatus($arr_status); break; default: 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_review', $sqlval, 'review_id = ?', array($id)); } }
以上で検索条件ページに表示されているレビュー情報を一括更新することが出来る
更新確認ポップアップを出したい場合は『/html/js\eccube.js』ファイルの
【eccube.setModeAndSubmit】関数をカスタマイズするとよい