■レビュー管理の表示ステータスを一括操作する
レビューを表示させるためには管理画面のレビュー管理から
表示ステータスを表示に変えてやる必要がある
ただ、一件ずつしか処理出来ないのでレビューが多くなると表示処理が
非常に面倒くさくなる
そこでレビュー管理の一覧から表示/非表示をラジオボタンで選択して
一括更新ボタンをクリックしてまとめて更新出来るようにする
手順: ビューファイル『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】関数をカスタマイズするとよい
