バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 【2.11系】レビュー一覧ページで表示内容を指定

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2013/2/8 16:29
対応状況: −−−
【2.11系】レビュー一覧ページで表示内容を指定
下記の記事を参考にレビュー一覧ページを作成致しました。
http://pro-grammer.info/archives/1258

/user_data/review_list.phpで全てのレビューを表示されている状態なのですが、例えばURLパラメータに『product_id=』を付与し、そのIDに該当する商品のレビューのみを表示するにはどのような処理が必要でしょうか?

宜しく願いいたします。
karin
投稿日時: 2013/2/8 16:47
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: 【2.11系】レビュー一覧ページで表示内容を指定
review_list.phpで、pagenoを取得しているのと同様に、product_idを取得し、値が設定されてればwhere文へ条件を追加する
といった処理の流れになるかと思います。


----------------

kanagettyo
投稿日時: 2013/2/8 17:36
対応状況: −−−
半人前
登録日: 2012/12/13
居住地:
投稿: 26
Re: 【2.11系】レビュー一覧ページで表示内容を指定
こんにちは。
参照URLを確認致しました。

「//レビューの件数取得」と「//商品ごとのレビュー情報を取得する」の両者のwhere文にあたる箇所にproduct_idの指定を与えて上げれば良いかと思われます。

具体的には、where文に当たる箇所に「"product_id = ?"」という条件を絞る処理の追加と…
「?」の所に相当する値を$arrvalに入れる処理が必要と思われます。
また、$arrvalに値を入れる際は配列形式である事に注意して下さい。
ゲスト
投稿日時: 2013/2/13 11:52
対応状況: −−−
Re: 【2.11系】レビュー一覧ページで表示内容を指定
>> karin様

ご回答いただきありがとうございます。
URLパラメータからproduct_idを取得するための記述について参考になる箇所はございますでしょうか?
SC_Product.php、LC_Page_Products_Detail.phpを覗いてみたのですが、どの部分がそれにあたるのか把握できなく・・・・



>> kanagettyo様

ご回答いただきありがとうございます。
LC_Page_Products_Detail.php内のfunction lfGetReviewDataを参考に下記のようにreview_list.phpを修正したところ、フロント側でシステムエラーとなりました。

//レビューの件数取得 の追記部分を削除するとエラーは表示されなくなるのですがレビューも表示されません。
これはproduct_id = ?の「?」にあたる値が$arrvalに入っていないとの認識で宜しいのでしょうか?


    function action($id) {
		$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 AND product_id = ?");
        $arrval[] = $id;
		$this->tpl_linemax = $linemax;

		//1ページの表示件数取得
		$page_max = SC_Utils_Ex::sfGetSearchPageMax($arrForm['search_page_max']);

		//ページ送りの取得
            $urlParam = "pageno=#page#";
		$objNavi = new SC_PageNavi_Ex($this->tpl_pageno, $linemax, $page_max,'fnNaviPage', NAVI_PMAX, $urlParam, SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE);
		$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.sex, t1.generation, t1.recommend_level, t1.title, t1.comment, t2.product_id, t2.name, t2.main_list_image, t2.del_flg";
		$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[] = $id;
		$this->arrReview = $objQuery->select($col, $from, $where, $arrval);	
    }
kanagettyo
投稿日時: 2013/2/13 12:43
対応状況: −−−
半人前
登録日: 2012/12/13
居住地:
投稿: 26
Re: 【2.11系】レビュー一覧ページで表示内容を指定
こんにちは。ソースを拝見しましたが、以下の三点に違和感を覚えました。
?idの取得方法
?$objQuery->countの構文
?配列の初期化方法

順番にお答え致します。

?ですが、$id(product_id)は…
「$this->arrForm = $_REQUEST;」
で、arrForm情報を取得した後に
$this->arrForm['product_id'];(arrForm情報内のproduct_idを取得)
このように取得する方が良いかな。と思いました。

?ですが、「count」というsql文で「product_id」の値が指定されていません。
「$objQuery->count("dtb_review", "del_flg = 0 AND status = 1 AND product_id = ?",product_idの値(配列));」
このようなイメージで値を指定してあげて下さい。

?ですが、配列の初期化はarray()を用いるのが一般的です。
配列の使い方などは少し調べて見て下さい。
ゲスト
投稿日時: 2013/2/15 11:49
対応状況: −−−
Re: 【2.11系】レビュー一覧ページで表示内容を指定
kanagettyo様

回答ありがとうございます。
以下のように修正をしたところ、任意の商品レビューを絞り込むことができるようになりました。しかしURLに『pageno=』を付加するとレビューが表示されなくなる状態になったのですが、コードの内容的に問題はございませんでしょうか?



    function action() {
		$objQuery =& SC_Query_Ex::getSingletonInstance();
	
            $this->arrForm = $_REQUEST;		
		$product_id = $this->arrForm['product_id'];

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

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

		//1ページの表示件数取得
		$page_max = SC_Utils_Ex::sfGetSearchPageMax($arrForm['search_page_max']);

		//ページ送りの取得
            $urlParam = "pageno=#page#";
		$objNavi = new SC_PageNavi_Ex($this->tpl_pageno, $linemax, $page_max,'fnNaviPage', NAVI_PMAX, $urlParam, SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE);
		$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.sex, t1.generation, t1.recommend_level, t1.title, t1.comment, t2.product_id, t2.name, t2.main_list_image, t2.del_flg";
		$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);
		
    }
yuh
投稿日時: 2013/2/15 14:12
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 【2.11系】レビュー一覧ページで表示内容を指定
多分page_noがついている時はproduct_idが取得できていないのが原因と思います。
あと、

$this->arrForm = $_REQUEST;		
$product_id = $this->arrForm['product_id'];

この部分を

$this->arrForm = $_REQUEST;
if($this->arrForm['product_id'] and preg_match('/^[0-9]+$/',$this->arrForm['product_id'])){
$product_id = $this->arrForm['product_id'];
}else{
unset($this->arrForm['product_id']);
}

に変更して値のチェックはしておいてください。
ゲスト
投稿日時: 2013/2/22 11:51
対応状況: −−−
Re: 【2.11系】レビュー一覧ページで表示内容を指定
yuh様

回答ありがとうございます。

page_noがURLに付加されている場合にproduct_idの取得が出来なくなってしまう原因について詳しくお伺い出来ないでしょうか?

ゲスト
投稿日時: 2013/3/7 16:41
対応状況: −−−
Re: 【2.11系】レビュー一覧ページで表示内容を指定
よく確認をしたところ/user_data/review_list.php?pageno=2&?product_id=1といったようにURLを直接打ってアクセスすると問題なく正しい内容が表示されました。

ページナビのリンクURLにproduct_idが含まれていないため、レビュー情報が取得できなかったようです。

ページナビのリンクにproduct_idをセットすれば問題は解決するかと思うのですが、この場合review_list.phpではなくSC_PageNavi.phpを編集するとの認識で宜しいでしょうか?
宜しくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,353名です
総投稿数は110,082件です

投稿数ランキング

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