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, ゼヒトモのホームページ作成・制作サービス, 仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス
2025/01/31
JQuery
2025/01/01
神社
御朱印
相模原
2024/10/27
ブラウザ
カスタム投稿
Wordpress
2024/08/20
神社
御朱印
2024/07/06
神社
御朱印