Blog

【ECCUBE】お客様の声一覧作成

2015/04/21

ECCUBE2.13 ECCUBE2.11~

備忘録です。

ECCUBE お客様の声一覧作成

参考サイト
http://ec-cube.nakweb.com/blog/408.html
http://pro-grammer.info/archives/1258

review_list.phpを作成、ソースコード貼り付け

LC_Page_Ex.php

<?php
require_once '../require.php';
require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php';

/**
 * ユーザーカスタマイズ用のページクラス
 *
 * 管理画面から自動生成される
 *
 * @package Page
 */
class LC_Page_User extends LC_Page_Ex {

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
		$masterData = new SC_DB_MasterData_Ex();
		$this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend");
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        parent::process();
        $this->action();
        $this->sendResponse();
    }

    /**
     * Page のアクション.
     *
     * @return void
     */
    function action() {
		$objQuery =& SC_Query_Ex::getSingletonInstance();
	
        $this->arrForm = $_REQUEST;

		//現在のページ番号取得
		$this->tpl_pageno = $this->arrForm['pageno'];

		//レビューの件数取得
		$linemax = $objQuery->count("dtb_review", "del_flg = 0 AND status = 1 ORDER BY create_date DESC");
		$this->tpl_linemax = $linemax;

		//1ページの表示件数取得
		$page_max = SC_Utils_Ex::sfGetSearchPageMax($arrForm['search_page_max']);
		//$page_max = 3; //確認用にハードコードしました

		//ページ送りの取得
        $urlParam = "pageno=#page#";
		$objNavi = new SC_PageNavi_Ex($this->tpl_pageno, $linemax, $page_max,'fnNaviPage', NAVI_PMAX, $urlParam);
		$this->arrPagenavi = $objNavi->arrPagenavi;
		
		//表示文字列アサイン
		$this->tpl_strnavi = $objNavi->strnavi;

		//開始行番号取得
		$startno = $objNavi->start_row;
		
		// 取得範囲の指定(開始行番号、行数のセット)
		$objQuery->setLimitOffset($page_max, $startno);
		
		//商品ごとのレビュー情報を取得する
		$col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.recommend_level, t1.title, t1.comment, t2.product_id, t2.name, t2.main_list_image";
		$from = "dtb_review as t1 left join dtb_products as t2 using (product_id)";
		$where = "t1.del_flg = 0 AND t1.status = 1 ORDER BY t1.create_date DESC";
		$this->arrReview = $objQuery->select($col, $from, $where, $arrval);
		
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }
	
}

$objPage = new LC_Page_User();
register_shutdown_function(array($objPage, 'destroy'));
$objPage->init();
$objPage->process();

review_list.php 新規作成

<!--{$tpl_strnavi}-->
<h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="この商品に対するお客様の声" /></h2>
    <!--{if count($arrReview) > 0}-->
        <div>
            <!--{section name=cnt loop=$arrReview}-->
                <div style="margin-bottom:30px;" class="clearfix">
                    <p class="voicedate" style="margin:10px 0;"><!--{$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="voiceimg" style="float:left;"><a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrReview[cnt].product_id|u}-->">
                        <img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arrReview[cnt].main_list_image|sfNoImageMainList|h}-->&amp;width=120&amp;height=120" alt="<!--{$arrReview[cnt].name|h}-->" /></a></p>
                    <div style="float:left;margin-left:10px;">
                    <p class="voiceimg"><a href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=<!--{$arrReview[cnt].product_id|u}-->"><!--{$arrReview[cnt].name|h}--></a></p>
                    <p class="voicetitle"><!--{$arrReview[cnt].title|h}--></p>
                    <p class="voicecomment"><!--{$arrReview[cnt].comment|h|nl2br}--></p>
                    </div>
                </div>
            <!--{/section}-->
        </div>
    <!--{/if}-->

●性別表示を追加

参考サイト
http://www.gb-jp.com/blog/eccube/1816.html

性別:<!--{if $arrReview[cnt].sex eq 1 }-->男性<!--{elseif $arrReview[cnt].sex eq 2 }-->女性<!--{/if}-->

★LC_Page_Products_Detail_Ex.phpにsexを追加

    //商品ごとのレビュー情報を取得する
    public function lfGetReviewData($product_id)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        //商品ごとのレビュー情報を取得する
        $col = 'create_date, reviewer_url, reviewer_name, recommend_level, title, comment, sex, reviewer_age';
        $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($product_id);
        $arrReview = $objQuery->select($col, $from, $where, $arrWhereVal);

        return $arrReview;
    }

★review_list.phpにt1.sex,を追加

		//商品ごとのレビュー情報を取得する
		$col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.recommend_level, t1.title, t1.sex, t2.product_id, t2.name, t2.main_list_image";
		$from = "dtb_review as t1 left join dtb_products as t2 using (product_id)";
		$where = "t1.del_flg = 0 AND t1.status = 1 ORDER BY t1.create_date DESC";
		$this->arrReview = $objQuery->select($col, $from, $where, $arrval);

●年齢欄を追加

DBにreviewer_ageを追加
各ファイルにreviewer_ageを追加
★LC_Page_Admin_Products_ReviewEdit_Ex.php

    /**
     * パラメーター情報の初期化を行う.
     *
     * @param  SC_FormParam $objFormParam SC_FormParam インスタンス
     * @return void
     */
    public function lfInitParam(&$objFormParam)
    {
        // 検索条件のパラメーターを初期化
        parent::lfInitParam($objFormParam);
        $objFormParam->addParam('レビューID', 'review_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('商品名', 'name', '', '', array(), '', false);
        $objFormParam->addParam('投稿日', 'create_date', '', '', array(), '', false);

        // 登録情報
        $objFormParam->addParam('レビュー表示', 'status', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('投稿者名', 'reviewer_name', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('投稿者URL', 'reviewer_url', URL_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('性別', 'sex', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
        $objFormParam->addParam('年齢', 'reviewer_age', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('おすすめレベル', 'recommend_level', INT_LEN, 'n', array('SELECT_CHECK'));
        $objFormParam->addParam('タイトル', 'title', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('コメント', 'comment', LTEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
    }

   
    /**
     * レビュー情報のDB取得
     *
     * @param  integer $review_id レビューID
     * @return array   レビュー情報
     */
    public function lfGetReviewData($review_id)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $select='review_id, A.product_id, reviewer_name, A.sex, A.recommend_level, ';
        $select.='reviewer_url, reviewer_age, A.title, A.comment, A.status, A.create_date, A.update_date, name';
        $from = 'dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id ';
        $where = 'A.del_flg = 0 AND B.del_flg = 0 AND review_id = ? ';
        $arrReview = $objQuery->select($select, $from, $where, array($review_id));
        if (empty($arrReview)) {
            SC_Utils_Ex::sfDispError('');
        }

        return $arrReview[0];
    }

管理画面フロント
★review_edit.tpl

            <tr>
                <th>年齢</th>
                <td>
                    <!--{if $arrErr.reviewer_age}--><span class="attention"><!--{$arrErr.reviewer_age}--></span><!--{/if}-->
                    <input type="text" class="box60" name="reviewer_age" value="<!--{$arrForm.reviewer_age|h}-->" style="<!--{$arrErr.reviewer_age|sfGetErrorColor}-->" size="30" />
                </td>
            </tr>

サイトフロント表示
★LC_Page_Products_Detail_Ex.php

    //商品ごとのレビュー情報を取得する
    public function lfGetReviewData($product_id)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        //商品ごとのレビュー情報を取得する
        $col = 'create_date, reviewer_url, reviewer_name, recommend_level, title, comment, sex, reviewer_age';
        $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($product_id);
        $arrReview = $objQuery->select($col, $from, $where, $arrWhereVal);

        return $arrReview;
    }

★LC_Page_Products_Review_Ex.php

    /**
     * パラメーター情報の初期化を行う.
     *
     * @param  SC_FormParam $objFormParam SC_FormParam インスタンス
     * @return void
     */
    public function lfInitParam(&$objFormParam)
    {
        $objFormParam->addParam('レビューID', 'review_id', INT_LEN, 'aKV');
        $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('NUM_CHECK','EXIST_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('投稿者名', 'reviewer_name', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('投稿者URL', 'reviewer_url', MTEXT_LEN, 'a', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'URL_CHECK'));
        $objFormParam->addParam('性別', 'sex', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('年齢', 'reviewer_age', MTEXT_LEN, 'aKV', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('おすすめレベル', 'recommend_level', INT_LEN, 'n', array('EXIST_CHECK', 'SELECT_CHECK'));
        $objFormParam->addParam('タイトル', 'title', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('コメント', 'comment', LTEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
    }

★review.tpl

<tr>
    <th>年齢</th>
    <td><span class="attention"><!--{$arrErr.reviewer_age}--></span><input type="text" name="reviewer_age" value="<!--{$arrForm.reviewer_age|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.reviewer_age|sfGetErrorColor}-->" class="box40" /></td>
</tr>

★review_confirm.tpl

            <tr>
                <th>年齢</th>
                <td><!--{$arrForm.reviewer_age|h}--></td>
            </tr>

★review_list.phpにt1.reviewer_age,を追加

		//商品ごとのレビュー情報を取得する
		$col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.reviewer_age, t1.recommend_level, t1.title, t1.sex, t2.product_id, t2.name, t2.main_list_image";
		$from = "dtb_review as t1 left join dtb_products as t2 using (product_id)";
		$where = "t1.del_flg = 0 AND t1.status = 1 ORDER BY t1.create_date DESC";
		$this->arrReview = $objQuery->select($col, $from, $where, $arrval);

ゼヒトモ内でのプロフィール: ROCKSTREAMゼヒトモのホームページ作成・制作サービス仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ