バージョン選択

フォーラム

メニュー

オンライン状況

54 人のユーザが現在オンラインです。 (42 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 54
もっと...

サイト内検索

質問 > フロント機能 > 商品一覧ページでレビュー数を表示したいです。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
NB0
投稿日時: 2016/5/31 16:46
対応状況: −−−
新米
登録日: 2014/11/2
居住地:
投稿: 10
商品一覧ページでレビュー数を表示したいです。
----------------------------------
EC-CUBE 2.13.2
サーバーOS FreeBSD 9.1-RELEASE-p24 amd64
DBサーバー MySQL 5.5
WEBサーバー Apache/2.2.31
PHP 5.6.18
----------------------------------

お世話になります。

商品一覧ページの各商品欄(価格の横など)にレビューの投稿数を表示しようと思い取り組んでいますが四苦八苦しております。

http://nogusa.hateblo.jp/entry/20101110/1289378392

上記サイトを参考にすると、商品詳細ページではレビュー数の取得に成功しました。
そこで、商品一覧ページでも同様にと考え、以下を追加しました。

data/class/pages/products/LC_Page_Products_List.php


    //商品ごとのレビュー情報を取得する
    public function lfGetReviewData($product_id)
    {
        $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($product_id);
        $arrReview = $objQuery->select($col, $from, $where, $arrWhereVal);

        return $arrReview;
    }


//     	レビュー情報の統計を取得する。

    function lfGetReviewInfoData($arrReview) {
    	$arrReviewInfo = array();
    
    	$arrReviewInfo['count'] = count($arrReview);	// レビュー数
    	$arrReviewInfo['level'] = array();
    	$offset = 5;
    	for ($i=0; $i < 5; $i++) {
    		$tmp = array();
    		$tmp['name'] = $offset - $i;
    		$tmp['value'] = 0;
    		array_push($arrReviewInfo['level'], $tmp);
    	}
    
    	$sum = 0;
    	foreach ($arrReview as $item) {
    		$arrReviewInfo['level'][$offset-$item['recommend_level']]['value']++;	// レベルごとの合計
    		$sum += $item['recommend_level'];
    	}
    
    	$avg = $sum / $arrReviewInfo['count'];
    	$arrReviewInfo['average'] = round($avg, 1);	// 平均(小数点第1位)
    
    	return $arrReviewInfo;
    }



さらにaction関数内に以下を追加。


// レビュー情報の取得
$this->arrReview = $this->lfGetReviewData($product_id);
// レビュー統計情報の取得
$this->arrReviewInfo = $this->lfGetReviewInfoData($this->arrReview);



今回はレビュー数のみで良いので、テンプレート内に以下を追加。

/data/Smarty/templates/default/products/list.tpl

<!--{$arrReviewInfo.count}-->




この手順で商品詳細ページでは取得できていましたが、商品一覧ページではレビュー数を取得できません。

試しに var_dump で出力したところ、

int(0)

が返ってきました。


//商品ごとのレビュー情報を取得する 部分の $arrReview を出力したところ

array(0) { }

が返ってきております。


なお、成功した商品詳細ページの $arrReview はレビューデータを配列で返している事を確認していますので、商品一覧ページで失敗している原因は $arrReview を取得できていない点ではないかという結論までは達しました。

しかし、具体的にどのように配列を取得できるのかが考えてもわかりません。

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=13126&forum=10&post_id=60197#forumpost60197

を参考にいろいろといじってみたものの、結局正常に表示できませんでした。


?なぜ商品一覧ページでは $arrReview を取得できないのか?
?正常に取得するための対応策(コードも記載して頂けると幸いです)

わかる方、どうかご教授いただけますと幸いです。
よろしくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,706名です
総投稿数は109,948件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.