- EC-CUBEでスマートフォンからのアクセスでPCサイトを表示する
- 2015.03.18
- 最近、EC-CUBE案件が増えてます。 
 予算等の関係でPCサイトのみのECサイトを制作する場合、
 スマートフォンからのアクセスの際にPC用のサイトを表示する必要がありましたのでその方法をまとめておきます。
 ※EC-CUBEのバージョンは2.13.3です。- ●対象ファイル 
 /data/class_extends/SC_Display_Ex.php- ●変更箇所 
 /data/class/SC_Display.phpのファイルのdetectDevice関数をコピーして
 SC_Display_Ex.phpのclass内にペーストします。- public static function detectDevice($reset = FALSE) 
 {
 if (is_null(SC_Display_Ex::$device) || $reset) {
 $nu = new Net_UserAgent_Mobile();
 $su = new SC_SmartphoneUserAgent_Ex();
 if ($nu->isMobile()) {
 SC_Display_Ex::$device = DEVICE_TYPE_MOBILE;
 // } elseif ($su->isSmartphone()) {
 // SC_Display_Ex::$device = DEVICE_TYPE_SMARTPHONE;
 } else {
 SC_Display_Ex::$device = DEVICE_TYPE_PC;
 }
 }- return SC_Display_Ex::$device; 
 }- これで、スマートフォンの時でもPCサイトを表示するようになります。 
 ちなみに、スマートフォンと携帯のいずれのアクセスの時もPCサイトを表示するようにするには
 下記のようになると思います。- public static function detectDevice($reset = FALSE) 
 {
 if (is_null(SC_Display_Ex::$device) || $reset) {
 $nu = new Net_UserAgent_Mobile();
 $su = new SC_SmartphoneUserAgent_Ex();
 // if ($nu->isMobile()) {
 // SC_Display_Ex::$device = DEVICE_TYPE_MOBILE;
 // } elseif ($su->isSmartphone()) {
 // SC_Display_Ex::$device = DEVICE_TYPE_SMARTPHONE;
 // } else {
 SC_Display_Ex::$device = DEVICE_TYPE_PC;
 // }
 }- return SC_Display_Ex::$device; 
 }- 要するに、SC_Display_Ex::$device = DEVICE_TYPE_PC;だけにするという事ですね。 
- ECCUBEのお客様の声を商品詳細以外のページで実装する
- 2015.03.03
- ECCUBEで構築されたサイトで、新規にページを追加して商品のランディングページのようなものを作成した際に、商品詳細にあるレビュー機能を実装したかったので調べましたが、そのようなニーズが無いのか、希望するものが見つからなかった為、レビュー機能を表示する方法をまとめておきます。 - まず、お客様の声のSmartyのソースは下記のようになっておりますので、これを追加したページのテンプレートファイルに貼り付けます。 
 ※ソースは必要に応じて適宜変更してください。- <!–この商品に対するお客様の声–> 
 <div id=”customervoice_area”>
 <h2><img src=”<!–{$TPL_URLPATH}–>img/title/tit_product_voice.png” alt=”この商品に対するお客様の声” /></h2>- <div class=”review_bloc clearfix”> 
 <p>この商品に対するご感想をぜひお寄せください。</p>
 <div class=”review_btn”>
 <!–{if count($arrReview) < $smarty.const.REVIEW_REGIST_MAX}–>
 <!–★新規コメントを書き込む★–>
 <a href=”../products/review.php”
 onclick=”eccube.openWindow(‘../products/review.php?product_id=●●●●●’,’review’,’600′,’640′); return false;”
 target=”_blank”>
 <img class=”hover_change_image” src=”<!–{$TPL_URLPATH}–>img/button/btn_comment.jpg” alt=”新規コメントを書き込む” />
 </a>
 <!–{/if}–>
 </div>
 </div>- <!–{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>
 <!–お客様の声ここまで–>- ※product_idは該当する商品のidを指定します。 - このソースを見ると、必要な情報は「$arrReview」と「$arrRECOMMEND」という配列に入っているようなので、 - user_dataフォルダの中の新規に追加したファイル名のPHPファイルに追加していきます。 - まず、変数の宣言をします。 - /** @var array レビュー情報 */ 
 public $arrReview;- /** おすすめレベル */ 
 public $arrRECOMMEND;- 次に関数を下記の通り変更する。 - function init() 
 {
 parent::init();
 $masterData = new SC_DB_MasterData_Ex();
 $this->arrRECOMMEND = $masterData->getMasterData(‘mtb_recommend’);
 }- function action() 
 {
 //レビュー情報の取得
 $this->arrReview = $this->lfGetReviewData();- } - action関数で使われるlfGetReviewData関数を追加する - //商品ごとのレビュー情報を取得する 
 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 AND product_id = ?”;
 $objQuery->setOrder(‘create_date DESC’);
 $objQuery->setLimit(REVIEW_REGIST_MAX);
 $arrWhereVal = array(“4”);
 $arrReview = $objQuery->select($col, $from, $where, $arrWhereVal);
 return $arrReview;
 }- ※$arrWhereValは、表示したい商品のproduct_idを指定します。 - これで、レビューの表示と投稿ができるようになりました。 
