バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 全てのレビューを表示させる方法について

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
RRRR
投稿日時: 2012/9/13 16:46
対応状況: −−−
新米
登録日: 2012/9/13
居住地:
投稿: 2
Re: トップページに新規レビューを表示させたい
このページを見てみ皆様のおかげでレビュー一覧ページを作ることができました。

ここで追加の質問なのですが、どのようにすれば、投稿されたレビューの総合計数をページに表示することが可能になるのかご教授いただけないでしょうか?

どうぞよろしくお願いいたします。

walk
投稿日時: 2011/5/16 9:09
対応状況: −−−
新米
登録日: 2011/5/9
居住地:
投稿: 4
Re: トップページに新規レビューを表示させたい
patapata様

お返事が遅れてすみません。><

ご回答くださりありがとうございます!
提示して下さったものを参考に、これから試してみたいと思います。
patapata
投稿日時: 2011/5/11 15:12
対応状況: −−−
仙人
登録日: 2010/7/7
居住地: 神奈川県
投稿: 502
Re: トップページに新規レビューを表示させたい
すみません。新着情報と新着レビュー勘違いしてました。
前回の投稿は無視してください。
※新着レビュー(フロント側テンプレート修正)で行うとセキュリティ的に危険なカスタマイズになってしまうので、行わないで下さい。

dtb_reviewテーブルは、product_id持ってるみたいなので、

PHPの処理部分にて
SQLのSELECT文をproduct_idをキーとした、dtb_productsとdtb_reviewの結合テーブルを取得するような形すれば

あとは、テンプレート側の処理は・・・よく見てませんが、
提示されているコードのままでもいけるかもしれません。

--追記--
上記でプログラム開発未経験者に伝わるのか疑問なので、
速度まったく考えてないSQLですが参考程度にどうぞ

SELECT *, cast(dtb_review.create_date as date) as review_date_disp FROM dtb_review LEFT JOIN dtb_products on dtb_review.product_id = dtb_products.product_id WHERE dtb_review.del_flg = '0' AND dtb_review.status = '1' ORDER BY dtb_review.create_date DESC LIMIT 5

う・・・コレじゃ駄目か?

SELECT * FROM ( SELECT *, cast(dtb_review.create_date as date) as review_date_disp FROM dtb_review WHERE dtb_review.del_flg = '0' AND dtb_review.status = '1' ORDER BY dtb_review.create_date DESC LIMIT 5 ) AS dtb_review left JOIN dtb_products on dtb_review.product_id = dtb_products.product_id

こうか(- -;)???

--蛇足--
・絞込みの条件どこに書けば早いか考えるて頭痛くなってやめちゃいました
・特定カラムのみ持ってくるのは、SQLが長くなりすぎて書くの面倒なのでやめちゃいました
SQLプロい人なら、さらさら書けるんだろうなぁと憧れます。
walk
投稿日時: 2011/5/11 10:05
対応状況: −−−
新米
登録日: 2011/5/9
居住地:
投稿: 4
Re: トップページに新規レビューを表示させたい
patapata様、
ご回答ありがとうございます。

>自身でプログラムを一から作ったことがない
お恥ずかしながらおっしゃる通りです。
質問内容が分かりづらかったらすみません。^^;

ご提示下さった方法は、
お客様からレビューが投稿された後に管理画面で手動で本文を編集する、
という形になるのでしょうか?
だとすると、申し訳ありません。私の考えている物とは違う様です。

こちらの説明不足でした。すみません。
このレビューを表示させるページですが、
レビュー一覧ページとして新着レビューを最高100〜200件ほど表示させたいと思っています。
なので、自動で画像が付く様に出来ればと思ったんです。

せっかく簡単な方法を考えて頂いたのに、本当に申し訳ないです。


表示させるには新規にカラムを用意しないといけなかったんですね。
よろしければ、もう少し詳しく教えて頂けませんか。
データベースにあるdtb_best_productsの様な内容の物を作成すればよいのでしょうか?
図々しくてすみません。
patapata
投稿日時: 2011/5/10 20:27
対応状況: −−−
仙人
登録日: 2010/7/7
居住地: 神奈川県
投稿: 502
Re: トップページに新規レビューを表示させたい
おそらくご自身でプログラムを一から作ったことがないレベルの方かと思いますので、簡易カスタマイズの方法で・・・

★新規レビュー入力でHTMLタグを入力できるようにする。
テンプレート側の以下の記述を
<!--{$arrNews[data].comment|escape|nl2br}-->

<!--{$arrNews[data].comment|nl2br}-->
に変更

あとは、新着情報の本文入力で
<img src="/html/resize_image.php?image=nabe130.jpg&width=80&height=80" alt="おなべ" />
とかってタグ入力すれば表示されるかと思いますがどうでしょうか?

-----
本筋は、
・データベースに紹介する商品IDを格納するカラムの追加して登録/表示する処理の追加

・データベースに紹介する商品イメージのPATHを格納するカラムを追加して登録/表示する処理の追加

・news_urlから商品IDを抽出する処理を追加して、そこから該当の商品イメージを表示する処理の追加

とかだと思いますが、提示されているコードのレベルから考えて、難しいカスタマイズになるかと思われます。

申し訳ありません。新着情報と新着レビューごっちゃに書いてました。
walk
投稿日時: 2011/5/10 16:32
対応状況: −−−
新米
登録日: 2011/5/9
居住地:
投稿: 4
Re: トップページに新規レビューを表示させたい
参考になりそうなファイルを見ながら自分なりにやってみたのですが、
やはりレビューのブロックに商品画像が呼び出せません。


LC_Page_FrontParts_Bloc_Best5.phpの中身を真似て
LC_Page_FrontParts_Bloc_view.phpへ下記の様に追記しました。

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        if (defined("MOBILE_SITE") && MOBILE_SITE) {
            $objSubView = new SC_SiteView();
        } else {
            $objSubView = new SC_MobileView();
        }	
	
	$objSiteInfo = $objView->objSiteInfo;
	
	// 基本情報を渡す
	$objSiteInfo = new SC_SiteInfo();
	$this->arrInfo = $objSiteInfo->data;
	

        //新着コメント一覧取得
        $this->arrNews = $this->lfGetReview();

        $objSubView->assignobj($this);
        $objSubView->display($this->tpl_mainpage);
		
    }

function lfGetReview(){
	$conn = new SC_DBConn();
	$objQuery = new SC_Query();
		
	$sql = "SELECT *, cast(create_date as date) as review_date_disp FROM dtb_review WHERE del_flg = '0' AND status = '1' ORDER BY create_date DESC LIMIT 5";
	$col = "DISTINCT A.*, name, price02_min, price01_min, main_list_image, main_image";
	$from = "dtb_best_products AS A INNER JOIN vw_products_allclass AS allcls using(product_id)";
	$where = "status = 1";
	$order = "rank";
        $objQuery->setOrder($order);
        $objQuery->setLimit(RECOMMEND_NUM);
		
        $list_data = $conn->getAll($sql);
	$arrNews = $objQuery->select($col, $from, $where);
		
	return $list_data;
	return $arrNews;
    }


管理画面から下記の様にブロック編集
<!--{section name=data loop=$arrNews}-->
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="90" align="center" valign="top">
<!--{if $arrNews[data].main_list_image != ""}-->
<!--{assign var=image_path value="`$arrNews[data].main_list_image`"}-->
<!--{else}-->
<!--{assign var=image_path value="`$smarty.const.NO_IMAGE_DIR`"}-->
<!--{/if}-->
<a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrNews[data].product_id}-->">
<img src="<!--{$smarty.const.SITE_URL}-->resize_image.php?image=<!--{$image_path|sfRmDupSlash}-->&width=70&height=70" alt="<!--{$arrNews[data].name|escape}-->" /><br>
<font size="-2"><!--{$arrNews[data].reviewer_name|escape|nl2br}-->さん</font></a><br><font size="-2">(★<!--{$arrNews[data].recommend_level|escape|nl2br}-->つ)</font>
</td>
<td align="left" valign="top">
<!--{$arrNews[data].review_date_disp|date_format:"%Y/%m/%d"}--><br>
<strong><!--{$arrNews[data].title|escape|nl2br}--></strong>
<hr><br>
<!--{$arrNews[data].comment|escape|nl2br}-->
</td>
</tr>
</table>
<!--{/section}-->



商品画像は表示されず、灰色になってしまいます。


どこを編集すればよいのか、
そもそも上記のやり方が間違っているのか
教えて頂ければ幸いです。
walk
投稿日時: 2011/5/9 14:25
対応状況: −−−
新米
登録日: 2011/5/9
居住地:
投稿: 4
Re: トップページに新規レビューを表示させたい
失礼します。
こちらのスレッドを拝見して、レビューの一覧ページを作成しました。

ページの作成には成功したのですが、どの商品に対するレビューなのかが分かりにくかった為、
分かりやすい様にレビューの横に商品画像を付けたいと思い、
下記の様に追記してみたのですが、うまく表示できませんでした。

<img src="<!--{$smarty.const.SITE_URL}-->resize_image.php?image=<!--{$smarty.const.IMAGE_SAVE_DIR}-->/<!--{$arrNews[data].main_image|sfRmDupSlash}-->&width=60&height=60" alt="">


作成したLC_Page_FrontParts_Bloc_view.phpに下記を追記。

/**
* Page のプロセス.
*
* @return void
*/
function process() {
if (defined("MOBILE_SITE") && MOBILE_SITE) {
$objSubView = new SC_SiteView();
} else {
$objSubView = new SC_MobileView();
}

// 追加ここから
$objSiteInfo = $objView->objSiteInfo;
// 基本情報を渡す
$objSiteInfo = new SC_SiteInfo();
$this->arrInfo = $objSiteInfo->data;
$objQuery = new SC_Query();
// 追加ここまで

//新着コメント一覧取得
$this->arrNews = $this->lfGetReview();

$objSubView->assignobj($this);
$objSubView->display($this->tpl_mainpage);

}


初心者の為、何処を変更すれば良いのか判断が難しく、行き詰まってしまいました。
ヒントなどが貰えればと思い、こちらで質問させて頂きました。
どなたかご教示頂けないでしょうか。
よろしくお願いします。
sakurai07
投稿日時: 2011/2/8 11:05
対応状況: −−−
長老
登録日: 2008/2/29
居住地:
投稿: 179
Re: トップページに新規レビューを表示させたい
habuさん、素敵です。

ありがとうございます。

本当に助かりました。やぁ〜っと、スッキリしました。

本当に本当にありがとうございます。
habu
投稿日時: 2011/2/7 18:42
対応状況: −−−
長老
登録日: 2006/9/15
居住地:
投稿: 282
Re: トップページに新規レビューを表示させたい
sakurai07 さん

おぉぉ!良かったです!お疲れさまでした!

商品ページへのリンクですが、以下を試してみてください。
レビュー投稿者名と、評価(星の数)の表示も追加しています。
(すみません、前回の投稿に間違いがありましたので、前回の投稿も修正しました)
<!--{section name=data loop=$arrNews}-->
  <dl>
    <dt><!--{$arrNews[data].review_date_disp|date_format:"%Y/%m/%d"}--></dt>
    <dd>
      <a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrNews[data].product_id}-->">
        <!--{$arrNews[data].title|escape|nl2br}-->
      </a><br />
      by <!--{$arrNews[data].reviewer_name|escape|nl2br}-->さん(★<!--{$arrNews[data].recommend_level|escape|nl2br}-->つ)<br />
      <!--{$arrNews[data].comment|escape|nl2br}-->
     </dd>
  </dl>
<!--{/section}-->


ちなみに、上記以外に何を表示できるかについては、
「<p>☆★☆ 新着レビューブロックです★☆★</p>」の下に
「<!--{debug output='html'}-->」と書くと確認できます。

(これを書くとエラーが発生する様になる場合は、以下のスレッドが参考になります)
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=5321&forum=2&post_id=25873


引用:
■疑問
レビューはまだ20件ほどですが、例えば1000件になったらどのように表示されますか?

表示件数指定することは可能なのでしょうか?

現状では、全件表示されると思います。
表示件数を限りたい場合は、SQL文の最後にLIMIT句を追加してみてください。

LC_Page_FrontParts_Bloc_Review.php
$sql = "SELECT *, cast(create_date as date) as review_date_disp FROM dtb_review WHERE del_flg = '0' AND status = '1' ORDER BY create_date DESC LIMIT 5";


----------------
株式会社システムフレンド
羽生 賢太郎(Kentaro Habu)
改造専門店・EC-CUBE工房

sakurai07
投稿日時: 2011/2/5 13:26
対応状況: −−−
長老
登録日: 2008/2/29
居住地:
投稿: 179
Re: トップページに新規レビューを表示させたい
できました!感動です!

habuさん本当にありがとうございます。

感謝です!STEP4が新着のままのデータが残っていた可能性あります。

あと希望としては、商品ページにリンクができたら嬉しいです。

下記を試してみましたがうまく推移しなかったです。

ご指導くださいませ。

<div id="newsarea">
<h2>
<img src="<!--{$TPL_DIR}-->img/top/news.jpg" width="400" height="29" alt="新着レビュー" />
</h2>

<p>☆★☆ 新着レビューブロックです★☆★</p>

<!--{section name=data loop=$arrNews}-->
<dl>
<dt><!--{$arrNews[data].review_date_disp|date_format:"%Y/%m/%d"}--></dt>
<dd><a href="<!--{$smarty.const.URL_DIR}-->products/detail<!--{$arrBestProducts[cnt].product_id}-->.html">
<!--{$arrNews[data].title|escape|nl2br}-->
<!--{if $arrNews[data].title}-->
</a>
<!--{/if}--><br />
<!--{$arrNews[data].comment|escape|nl2br}-->
</dd>
</dl>
<!--{/section}-->
</div>


■疑問
レビューはまだ20件ほどですが、例えば1000件になったらどのように表示されますか?

表示件数指定することは可能なのでしょうか?
(1) 2 3 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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.