【EC-CUBE】レビュー管理の検索結果一覧に商品IDと会員IDを表示する
こんにちは、fukasawaです。スーパーコーラキャンデーという飴をローソンで買ってみたのですが、口に入れた瞬間あまりの酸っぱさにこの世に生まれてきたことを後悔しました。一瞬で目が覚めるので、見つけたら是非試してみてください。
さて、前回はEC-CUBEのレビュー機能でCSV出力項目をカスタマイズする方法について触れましたが、今回は引き続き、レビュー機能の検索結果一覧の表示項目に商品ID,会員IDを追加する方法について書いてみたいと思います。
※EC-CUBEバージョン2.13.1の使用を想定した内容になっています
レビュー管理の検索結果一覧に商品IDを出力する。
レビュー管理の検索結果一覧には商品IDが表示されていないので、これを表示させてみます。下記のようにテンプレートファイルを修正します。
\data\Smarty\templates\admin\products\review.tpl
- 142行目付近、「<th>投稿者名</th>」の下に追記
<th>商品ID</th>
- 155行目付近、「<td><!--{$arrReview[cnt].reviewer_name|h}--></td>」の下に追記
<td><!--{$arrReview[cnt].product_id|h}--></td>
これでOKです。もともと商品IDがテンプレートに渡されているようなので、PHP側で商品IDを取得してテンプレートに渡す処理を記述しなくても商品IDを使う事ができます。
また、上で追記した155行目付近の修正箇所を下記のように記述することで、表示された商品IDに商品詳細ページへのリンクを設定することが可能です。
<td><a href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=<!--{$arrReview[cnt].product_id}-->&admin=on" target="_blank"><!--{$arrReview[cnt].product_id|h}--></a></td>
レビュー管理の編集画面に商品IDを表示したい場合も同様に、テンプレートの修正のみで表示することができます。
\data\Smarty\templates\admin\products\review_edit.tpl
- 37行目付近、「 <table>」の下に追記
<tr>
<th>商品ID</th>
<td><a href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=<!--{$arrForm.product_id}-->&admin=on" target="_blank"><!--{$arrForm.product_id|h}--></a>
<input type="hidden" name="product_id" value="<!--{$arrForm.product_id}-->" />
</td>
</tr>
レビュー管理の検索結果一覧に会員IDを出力する。
まず、レビューを投稿した会員の会員IDがDBに入るように作られていないので、入れるようカスタマイズする必要があります。 lfRegistRecommendData()というメソッドをLC_Page_Products_Review.phpからコピーし、LC_Page_Products_Review_Ex.phpに追加します。その後、新しく追加したメソッドに下記のようにif文を追記してください。レビュー投稿時に会員がログインしていた場合、会員の会員IDがDBに入るようになります。
\data\class_extends\page_extends\products\LC_Page_Products_Review_Ex.php
- カスタマイズを行っている場合は既にメソッドが存在している可能性があります。
//登録実行
public function lfRegistRecommendData(&$objFormParam)
{
…
$arrRegist['creator_id'] = '0';
//if文を追加
if(isset($_SESSION['customer']['customer_id'])){
$arrRegist['customer_id'] = $_SESSION['customer']['customer_id'];
}
//-- 登録実行
$objQuery->begin();
…
}
次に、PHP側で会員IDを取得し、一覧画面のテンプレートで使えるようにします。LC_Page_Admin_Products_Review.phpにlfGetReview()というメソッドがあるので、それをLC_Page_Admin_Products_Review_Ex.phpにコピーします。コピーしたメソッドの中に、DBから取得するカラムを$colという変数に入れている箇所があるので、そこに「customer_id」を追記します。
\data\class_extends\page_extends\admin\products\LC_Page_Admin_Products_Review_Ex.php
- カスタマイズを行っている場合は既にメソッドが存在している可能性があります。
/**
* レビュー検索結果の取得
*
* @param array $arrForm フォームデータ
* @param string $where WHERE文
* @param array $arrWhereVal WHERE文の判定値
* @return array レビュー一覧
*/
public function lfGetReview($arrForm, $where, $arrWhereVal)
{
…
$col .= 'reviewer_url, title, comment, A.status, A.create_date, A.update_date, name, customer_id';
…
return $arrReview;
}
次に、取得した会員IDを一覧ページに表示するようテンプレートを修正します。
\data\Smarty\templates\admin\products\review.tpl
- 142行目付近、「<th>投稿者名</th>」の下に追記
<th>会員ID</th>
- 155行目付近、「 <td><!--{$arrReview[cnt].reviewer_name|h}--></td> 」の下に追記
<td><!--{$arrReview[cnt].customer_id|h}--></td>