- ECCUBEのお客様の声を商品詳細以外のページで実装する
- 2015.03.03
ECCUBEで構築されたサイトで、新規にページを追加して商品のランディングページのようなものを作成した際に、商品詳細にあるレビュー機能を実装したかったので調べましたが、そのようなニーズが無いのか、希望するものが見つからなかった為、レビュー機能を表示する方法をまとめておきます。
まず、お客様の声のSmartyのソースは下記のようになっておりますので、これを追加したページのテンプレートファイルに貼り付けます。
※ソースは必要に応じて適宜変更してください。<!–この商品に対するお客様の声–>
<div id=”customervoice_area”>
<h2><img src=”<!–{$TPL_URLPATH}–>img/title/tit_product_voice.png” alt=”この商品に対するお客様の声” /></h2><div class=”review_bloc clearfix”>
<p>この商品に対するご感想をぜひお寄せください。</p>
<div class=”review_btn”>
<!–{if count($arrReview) < $smarty.const.REVIEW_REGIST_MAX}–>
<!–★新規コメントを書き込む★–>
<a href=”../products/review.php”
onclick=”eccube.openWindow(‘../products/review.php?product_id=●●●●●’,’review’,’600′,’640′); return false;”
target=”_blank”>
<img class=”hover_change_image” src=”<!–{$TPL_URLPATH}–>img/button/btn_comment.jpg” alt=”新規コメントを書き込む” />
</a>
<!–{/if}–>
</div>
</div><!–{if count($arrReview) > 0}–>
<ul>
<!–{section name=cnt loop=$arrReview}–>
<li>
<p class=”voicetitle”><!–{$arrReview[cnt].title|h}–></p>
<p class=”voicedate”><!–{$arrReview[cnt].create_date|sfDispDBDate:false}–> 投稿者:<!–{if $arrReview[cnt].reviewer_url}–><a href=”<!–{$arrReview[cnt].reviewer_url}–>” target=”_blank”><!–{$arrReview[cnt].reviewer_name|h}–></a><!–{else}–><!–{$arrReview[cnt].reviewer_name|h}–><!–{/if}–> おすすめレベル:<span class=”recommend_level”><!–{assign var=level value=$arrReview[cnt].recommend_level}–><!–{$arrRECOMMEND[$level]|h}–></span></p>
<p class=”voicecomment”><!–{$arrReview[cnt].comment|h|nl2br}–></p>
</li>
<!–{/section}–>
</ul>
<!–{/if}–>
</div>
<!–お客様の声ここまで–>※product_idは該当する商品のidを指定します。
このソースを見ると、必要な情報は「$arrReview」と「$arrRECOMMEND」という配列に入っているようなので、
user_dataフォルダの中の新規に追加したファイル名のPHPファイルに追加していきます。
まず、変数の宣言をします。
/** @var array レビュー情報 */
public $arrReview;/** おすすめレベル */
public $arrRECOMMEND;次に関数を下記の通り変更する。
function init()
{
parent::init();
$masterData = new SC_DB_MasterData_Ex();
$this->arrRECOMMEND = $masterData->getMasterData(‘mtb_recommend’);
}function action()
{
//レビュー情報の取得
$this->arrReview = $this->lfGetReviewData();}
action関数で使われるlfGetReviewData関数を追加する
//商品ごとのレビュー情報を取得する
function lfGetReviewData() {
$objQuery =& SC_Query_Ex::getSingletonInstance();
$col = “create_date, reviewer_url, reviewer_name, recommend_level, title, comment”;
$from = “dtb_review”;
$where = “del_flg = 0 AND status = 1 AND product_id = ?”;
$objQuery->setOrder(‘create_date DESC’);
$objQuery->setLimit(REVIEW_REGIST_MAX);
$arrWhereVal = array(“4”);
$arrReview = $objQuery->select($col, $from, $where, $arrWhereVal);
return $arrReview;
}※$arrWhereValは、表示したい商品のproduct_idを指定します。
これで、レビューの表示と投稿ができるようになりました。
【この記事のタグ】
コメントを残す