EC-CUBE レビュー管理の表示ステータスを一括操作する

■レビュー管理の表示ステータスを一括操作する

レビューを表示させるためには管理画面のレビュー管理から
表示ステータスを表示に変えてやる必要がある

ただ、一件ずつしか処理出来ないのでレビューが多くなると表示処理が
非常に面倒くさくなる

そこでレビュー管理の一覧から表示/非表示をラジオボタンで選択して
一括更新ボタンをクリックしてまとめて更新出来るようにする

手順:
ビューファイル『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));
    }
  }

以上で検索条件ページに表示されているレビュー情報を一括更新することが出来る

■レビュー管理一覧画面
ec_cube_067

更新確認ポップアップを出したい場合は『/html/js\eccube.js』ファイルの
【eccube.setModeAndSubmit】関数をカスタマイズするとよい

Comments are closed.