バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品一覧ページでレビュー件数の表示

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
zerocre
投稿日時: 2013/8/13 15:00
対応状況: −−−
半人前
登録日: 2013/6/21
居住地: Tokyo
投稿: 15
商品一覧ページでレビュー件数の表示
----------------------------------
EC-CUBE 2.12.x
サーバーOS FreeBSD 7.1-RELEASE-p16 i386
DBサーバー MySQL 5.5
WEBサーバー Apache/1.3.42 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e
PHP 5.2.17
----------------------------------
平素よりお世話になっております。

商品一覧ページで各商品のレビュー件数を表示したく試行錯誤しております。

レビュー全体の件数はカウントされますが、product_idとの紐付けが出来ず商品一覧のループされているなかに記述すると全ての商品にレビューの合計数が表示されてしまいます(当たり前ですが…)

ループされている配列の中にproduct_idで紐付けた他のDBテーブルの情報を読み込む記述方法が分かりません。

以下が記述を行った部分で御座います。
data/class/pages/products/LC_Page_Products_List.php

		//レビューの件数取得
		$objQuery =& SC_Query_Ex::getSingletonInstance();
		$linemax = $objQuery->count("dtb_review", "del_flg = 0 AND status = 1 AND product_id = ?", array($product_id));
		$this->tpl_linemax = $linemax;

		//商品ごとのレビュー情報を取得する
		$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 AND product_id = ? ORDER BY t1.create_date DESC";
		$arrval[] = $product_id;
		$this->arrReview = $objQuery->select($col, $from, $where, $arrval);


tplに<!--{$tpl_linemax}-->と記載すると、レビューの合計件数が商品一覧ページに表示されているすべての商品に反映されてしまいます。

どうか、ご教授頂けますと幸いです。
zerocre
投稿日時: 2013/8/13 18:06
対応状況: −−−
半人前
登録日: 2013/6/21
居住地: Tokyo
投稿: 15
Re: 商品一覧ページでレビュー件数の表示
訂正:

上記のソースだけでは、件数が表示されません。
商品ID1の商品にレビューを3つ書き込み、表示させた後、上記ソースの


$linemax = $objQuery->count("dtb_review", "del_flg = 0 AND status = 1 AND product_id = ?", array($product_id));

の部分を

$linemax = $objQuery->count("dtb_review", "del_flg = 0 AND status = 1 AND product_id = 1", array($product_id));

としてproduct_idで絞ると3という数値が呼び出せますが、<!--{$tpl_linemax}-->と記述すると、ループされているためすべての承認に「レビュー件数:3件」と記載されてしまいます。

product_idをループしている処理に受け渡すにはどういう記述を行ったらよろしいのでしょうか…?
sumida
投稿日時: 2013/8/13 21:22
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: 商品一覧ページでレビュー件数の表示
思いつきですが、
product_idをキーとして、$linemaxを配列にしては、どうでしょうか?
zerocre
投稿日時: 2013/8/13 22:17
対応状況: −−−
半人前
登録日: 2013/6/21
居住地: Tokyo
投稿: 15
Re: 商品一覧ページでレビュー件数の表示
$linemaxを配列にするというと、ステータス情報の配列を追加している箇所と同じような記述を行うという事でしょうか?

INNER JOINなどを使用するのでしょうか…

記述方法がわからず、今回行いたい処理と同じような処理を行なっている参考にできる他の箇所がありましたら教えていただけると幸いです。
sumida
投稿日時: 2013/8/13 22:53
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: 商品一覧ページでレビュー件数の表示
LC_Page_Products_List.php

とりあえず、tpl_linemaxは、商品件数で使用されているようですが。
zerocreさんの表現でいけば、
$linemax[$product_id] = $objQuery->count("dtb_review", "del_flg = 0 AND status = 1 AND product_id = ?", array($product_id));

ループを抜けてから、
$this->tpl_linemax = $linemax;


list.tpl

<!--{foreach from=$arrProducts item=arrProduct name=arrProducts}-->内で、
<!--{assign var=id value=$arrProduct.product_id}-->
としているようなので、product_idが、idに入っているとすると、

<!--{$tpl_linemax[$id]}-->

でどうでしょう。
zerocre
投稿日時: 2013/8/14 13:53
対応状況: −−−
半人前
登録日: 2013/6/21
居住地: Tokyo
投稿: 15
Re: 商品一覧ページでレビュー件数の表示
わざわざご対応頂いたのに申し訳御座いません。
arrProductsの配列のなかに入れる事が出来ました。
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,883名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
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.