2015/04/21
ECCUBE2.13 ECCUBE2.11~
備忘録です。
ECCUBE お客様の声一覧作成
参考サイト
http://ec-cube.nakweb.com/blog/408.html
http://pro-grammer.info/archives/1258
review_list.phpを作成、ソースコード貼り付け
LC_Page_Ex.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 { /** * 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() { $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 ORDER BY create_date DESC"); $this->tpl_linemax = $linemax; //1ページの表示件数取得 $page_max = SC_Utils_Ex::sfGetSearchPageMax($arrForm['search_page_max']); //$page_max = 3; //確認用にハードコードしました //ページ送りの取得 $urlParam = "pageno=#page#"; $objNavi = new SC_PageNavi_Ex($this->tpl_pageno, $linemax, $page_max,'fnNaviPage', NAVI_PMAX, $urlParam); $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.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 ORDER BY t1.create_date DESC"; $this->arrReview = $objQuery->select($col, $from, $where, $arrval); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } } $objPage = new LC_Page_User(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process();
review_list.php 新規作成
<!--{$tpl_strnavi}--> <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="この商品に対するお客様の声" /></h2> <!--{if count($arrReview) > 0}--> <div> <!--{section name=cnt loop=$arrReview}--> <div style="margin-bottom:30px;" class="clearfix"> <p class="voicedate" style="margin:10px 0;"><!--{$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="voiceimg" style="float:left;"><a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrReview[cnt].product_id|u}-->"> <img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arrReview[cnt].main_list_image|sfNoImageMainList|h}-->&width=120&height=120" alt="<!--{$arrReview[cnt].name|h}-->" /></a></p> <div style="float:left;margin-left:10px;"> <p class="voiceimg"><a href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=<!--{$arrReview[cnt].product_id|u}-->"><!--{$arrReview[cnt].name|h}--></a></p> <p class="voicetitle"><!--{$arrReview[cnt].title|h}--></p> <p class="voicecomment"><!--{$arrReview[cnt].comment|h|nl2br}--></p> </div> </div> <!--{/section}--> </div> <!--{/if}-->
●性別表示を追加
参考サイト
http://www.gb-jp.com/blog/eccube/1816.html
性別:<!--{if $arrReview[cnt].sex eq 1 }-->男性<!--{elseif $arrReview[cnt].sex eq 2 }-->女性<!--{/if}-->
★LC_Page_Products_Detail_Ex.phpにsexを追加
//商品ごとのレビュー情報を取得する public function lfGetReviewData($product_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); //商品ごとのレビュー情報を取得する $col = 'create_date, reviewer_url, reviewer_name, recommend_level, title, comment, sex, reviewer_age'; $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; }
★review_list.phpにt1.sex,を追加
//商品ごとのレビュー情報を取得する $col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.recommend_level, t1.title, t1.sex, 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 ORDER BY t1.create_date DESC"; $this->arrReview = $objQuery->select($col, $from, $where, $arrval);
●年齢欄を追加
DBにreviewer_ageを追加
各ファイルにreviewer_ageを追加
★LC_Page_Admin_Products_ReviewEdit_Ex.php
/** * パラメーター情報の初期化を行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ public function lfInitParam(&$objFormParam) { // 検索条件のパラメーターを初期化 parent::lfInitParam($objFormParam); $objFormParam->addParam('レビューID', 'review_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); $objFormParam->addParam('商品名', 'name', '', '', array(), '', false); $objFormParam->addParam('投稿日', 'create_date', '', '', array(), '', false); // 登録情報 $objFormParam->addParam('レビュー表示', 'status', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); $objFormParam->addParam('投稿者名', 'reviewer_name', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('投稿者URL', 'reviewer_url', URL_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('性別', 'sex', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); $objFormParam->addParam('年齢', 'reviewer_age', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('おすすめレベル', 'recommend_level', INT_LEN, 'n', array('SELECT_CHECK')); $objFormParam->addParam('タイトル', 'title', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('コメント', 'comment', LTEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); }
/** * レビュー情報のDB取得 * * @param integer $review_id レビューID * @return array レビュー情報 */ public function lfGetReviewData($review_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $select='review_id, A.product_id, reviewer_name, A.sex, A.recommend_level, '; $select.='reviewer_url, reviewer_age, A.title, A.comment, A.status, A.create_date, A.update_date, name'; $from = 'dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id '; $where = 'A.del_flg = 0 AND B.del_flg = 0 AND review_id = ? '; $arrReview = $objQuery->select($select, $from, $where, array($review_id)); if (empty($arrReview)) { SC_Utils_Ex::sfDispError(''); } return $arrReview[0]; }
管理画面フロント
★review_edit.tpl
<tr> <th>年齢</th> <td> <!--{if $arrErr.reviewer_age}--><span class="attention"><!--{$arrErr.reviewer_age}--></span><!--{/if}--> <input type="text" class="box60" name="reviewer_age" value="<!--{$arrForm.reviewer_age|h}-->" style="<!--{$arrErr.reviewer_age|sfGetErrorColor}-->" size="30" /> </td> </tr>
サイトフロント表示
★LC_Page_Products_Detail_Ex.php
//商品ごとのレビュー情報を取得する public function lfGetReviewData($product_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); //商品ごとのレビュー情報を取得する $col = 'create_date, reviewer_url, reviewer_name, recommend_level, title, comment, sex, reviewer_age'; $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; }
★LC_Page_Products_Review_Ex.php
/** * パラメーター情報の初期化を行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ public function lfInitParam(&$objFormParam) { $objFormParam->addParam('レビューID', 'review_id', INT_LEN, 'aKV'); $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('NUM_CHECK','EXIST_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('投稿者名', 'reviewer_name', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('投稿者URL', 'reviewer_url', MTEXT_LEN, 'a', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'URL_CHECK')); $objFormParam->addParam('性別', 'sex', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('年齢', 'reviewer_age', MTEXT_LEN, 'aKV', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('おすすめレベル', 'recommend_level', INT_LEN, 'n', array('EXIST_CHECK', 'SELECT_CHECK')); $objFormParam->addParam('タイトル', 'title', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('コメント', 'comment', LTEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); }
★review.tpl
<tr> <th>年齢</th> <td><span class="attention"><!--{$arrErr.reviewer_age}--></span><input type="text" name="reviewer_age" value="<!--{$arrForm.reviewer_age|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.reviewer_age|sfGetErrorColor}-->" class="box40" /></td> </tr>
★review_confirm.tpl
<tr> <th>年齢</th> <td><!--{$arrForm.reviewer_age|h}--></td> </tr>
★review_list.phpにt1.reviewer_age,を追加
//商品ごとのレビュー情報を取得する $col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.reviewer_age, t1.recommend_level, t1.title, t1.sex, 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 ORDER BY t1.create_date DESC"; $this->arrReview = $objQuery->select($col, $from, $where, $arrval);
ゼヒトモ内でのプロフィール: ROCKSTREAM, ゼヒトモのホームページ作成・制作サービス, 仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス
2024/08/20
神社
御朱印
2024/07/06
神社
御朱印
2024/07/06
神社
御朱印
2024/02/09
神社
2024/02/09
神社