Labo

[EC-CUBE 2.11.1] レビュー一覧ページ作成

2011年08月05日 / 投稿者名:fukap


商品に関わりなくレビューを全件表示するページを作ってみたいと思います。



まず管理画面にログインして、デザイン管理>PC>レイアウト設定 から、ページを新規入力します。
URLは review_list.php として、以下のコードを貼り付けて保存します。

<div id="customervoice_area">
<h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="この商品に対するお客様の声" /></h2>
    <!--{if count($arrReview) > 0}-->
        <ul>
            <!--{section name=cnt loop=$arrReview}-->
                <li>
                    <p class="voicetitle"><!--{$arrReview[cnt].title|h}--></p>
                    <p class="voicedate"><!--{$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="voicecomment"><!--{$arrReview[cnt].comment|h|nl2br}--></p>
                </li>
            <!--{/section}-->
        </ul>
    <!--{/if}-->
</div>

次に、html/user_data/review_list.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 {

    /** おすすめレベル */
    var $arrRECOMMEND;

    /**
     * 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() {

      //レビュー情報の取得
        $this->arrReview = $this->lfGetReviewData();
    }

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

    //商品ごとのレビュー情報を取得する
    function lfGetReviewData() {
        $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 ORDER BY create_date DESC";
        $arrReview = $objQuery->select($col, $from, $where, $arrval);
        return $arrReview;
    }
}

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

html/user_data/review_list.php をブラウザから確認してみてください。

[EC-CUBE 2.11.1] レビュー一覧ページ作成 への10件のコメント

  1. viper より:

    改めてこちらの方へお問い合わせをさせて頂きます。
    早速の修正ありがとうございます。
    修正してみたところ、画像欄は表示されリンクは可能な状態になりましたが
    product_idを拾えないのか、画像は表示さずにリンク先は
    〜/shop/products/detail.php?product_id= とだけなっており
    ご指定のページはございませんとなってしまいます。

    もう少しなのですが、お心当たりは御座いますでしょうか?

  2. fukap より:

    書き込み、ありがとうございます。
    こちらの記事に関するご質問ですね。
    http://ec-cube.nakweb.com/blog/447.html

    現象を聞く限りでは、PHP側に問題がありそうだなと思い、
    再度コードを見たところ、こちらにも怪しい改行コードを発見しました。

    html/user_data/review_list.php の lfGetReviewData() 内のコードを
    再度上書きしてどうなるか試してみてもらえますか?

    • viper より:

      >lfGetReviewData() 内のコード

      すみません、ちょっとよく解らないので
      全部再度コピペして上書きしましたが、同じ状態です。

  3. fukap より:

    一応、このコードがテストサーバー内に残っていたので、そのコードとdiffで比較してみましたが、不審な点はないですね。
    私の環境では問題なく表示はされています。

    viper様の場合は、商品名などは出ているようなので、dtb_products のデータは拾えていると思うのですが。

    一度、data/Smarty/templates/default/user_data/review_list.tpl の1行目に

    <!--{$arrReview|@var_dump}-->

    を書き加えて、ブラウザに何が出力されているか教えてもらえますか?

    正常に値が取得できていれば、[“product_id”]=> string(1) “3” というふうに、
    product_id が拾えているはずです。

    問題の切り分けのために一度お試しください。

  4. viper より:

    何度ものご対応に感謝致します。

    data/Smarty/templates/default/user_data/review_list.tpl の1行目に書き加えて
    ブラウザで確認してみたところ、この商品に対するお客様の声の上に

    array(2) { [0]=> array(6) { [“create_date”]=> string(19) “2011-08-09 22:52:29” [“reviewer_url”]=> NULL [“reviewer_name”]=> string(5) “test2さん” [“recommend_level”]=> string(1) “5” [“title”]=> string(9) “抹茶” [“comment”]=> string(9) “緑色” } [1]=> array(6) { [“create_date”]=> string(19) “2011-08-09 22:51:38” [“reviewer_url”]=> NULL [“reviewer_name”]=> string(4) “testさん” [“recommend_level”]=> string(1) “5” [“title”]=> string(5) “烏龍茶” [“comment”]=> string(12) “茶色” } }

    上記の様に表示されました。
    2つの商品(抹茶・烏龍茶)でテストしています

  5. viper より:

    今、再度新規review_list2を作成したところ
    ちゃんと画像が表示されてリンクも出来る様になりました。
    ありがとうございます!

    何故review_listで不具合があるのかは未だ不明ではあるものの
    お陰様で改善出来ましたので、一応解決とさせて頂きます。

    後、これを参考にブロック表示させる事も出来ますでしょうか?

  6. fukap より:

    var_dump() の結果を見るに、product_id が出力されていませんから、PHP側に問題があったと思われます。
    何はともあれ、できたようで良かったですね。

    ブロックについても、同じ考え方で作成可能だと思います。
    ただ、PHPやSmartyの基本知識は必要ですから、初心者さんにはちょっと厳しいかもしれません。

  7. Kashin より:

    ありがとうございます。ページは無事できました。
    よろしければブロック表示の方法も教えていただきたいのですがよろしくお願いします。

  8. fukap より:

    ブロック表示も基本ロジックは同じだと思います。
    時間ができたら、考えてみようかな・・・。

  9. ピンバック: [EC-CUBE 2.11.4] レビュー一覧ブロック作成 | NAKWEB × EC-CUBE

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。