EC-CUBEのモバイルとスマートフォンサイトにもレビュー機能を付ける:EC-CUBE2.11.1
EC-CUBEでデフォルトではモバイルサイトとスマートフォンサイトには商品レビュー機能がないので
簡単にレビュー機能を実装できたやり方をメモ
詳しい変更点は後述しますが、
ざっとメモするとデフォルトの商品詳細ページには
<!--この商品に対するお客様の声--> <div id="customervoice_area"> <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="この商品に対するお客様の声" /></h2> <div class="review_bloc clearfix"> <p>この商品に対するご感想をぜひお寄せください。</p> <div class="review_btn"> <!--{if count($arrReview) < $smarty.const.REVIEW_REGIST_MAX}--> <!--★新規コメントを書き込む★--> <a href="./review.php" onclick="win02('./review.php?product_id=<!--{$arrProduct.product_id}-->','review','600','640'); return false;" onmouseover="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_comment_on.jpg','review');" onmouseout="chgImg('<!--{$TPL_URLPATH}-->img/button/btn_comment.jpg','review');" target="_blank"> <img src="<!--{$TPL_URLPATH}-->img/button/btn_comment.jpg" alt="新規コメントを書き込む" name="review" id="review" /></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> <!--お客様の声ここまで-->
のような記述があると思いますが、
基本的にはこの部分のソースをそれぞれモバイル用とスマートフォン用に最適化させ
あとは
/ec/data/Smarty/templates/default/products/
の中の
- review.tpl
- review_complete.tpl
- review_confirm.tpl
という3つのファイルもそれぞれモバイル用とスマートフォン用に作ってアップさせればOKです
スマートフォン用カスタマイズ
スマートフォン用に関してはjavascriptもCSSもほぼ適用されるので
ほぼ上記のPC用ソースをそのままスマートフォン用の商品詳細ページの
レビューを表示させたい箇所に貼り付け、
- review.tpl
- review_complete.tpl
- review_confirm.tpl
の3つのファイルもサーバーからダウンロードしそのまま
/ec/data/Smarty/templates/sphone/products/
の中にアップロードすれば完成です。
あとは細かい部分などは表示を確認しながらCSSなどで編集すればOK!
・・・たぶん
モバイルサイト用カスタマイズ
モバイルサイト用はjavascriptやCSSが効かない部分があるので少し修正が必要になります。
まず、上記のPC用ソースを
<!--この商品に対するお客様の声--> <br> ■お客様の声<br> <hr> <!--{if count($arrReview) == 0}--> <center> まだコメントはありません。 </center> <!--{else}--> <!--{section name=cnt loop=$arrReview max=5}--> 投稿日:<!--{$arrReview[cnt].create_date|sfDispDBDate:false}--><br> 投稿者:<!--{if $arrReview[cnt].reviewer_url}--><a href="<!--{$arrReview[cnt].reviewer_url}-->" target="_blank"><!--{$arrReview[cnt].reviewer_name|escape}--></a><!--{else}--><!--{$arrReview[cnt].reviewer_name|escape}--><!--{/if}--><br> おすすめレベル:<!--{assign var=level value=$arrReview[cnt].recommend_level}--><!--{$arrRECOMMEND[$level]|escape}--><br> タイトル:<!--{$arrReview[cnt].title|escape}--><br> 内容:<!--{$arrReview[cnt].comment|escape|nl2br}--><br> <hr> <!--{/section}--> <!--{/if}--> <!--{if count($arrReview) < $smarty.const.REVIEW_REGIST_MAX}--> <a href="./review.php?product_id=<!--{$arrProduct.product_id}-->"> 新規コメントを書き込む </a> <br> 投稿内容を確認してから、表示されます。 <!--{/if}--> <!--お客様の声ここまで-->
のように余計なタグを除いてモバイル用に修正します。
ここで重要なのが
<a href="./review.php?product_id=<!--{$arrProduct.product_id}-->"> 新規コメントを書き込む </a>
という部分で、必ずリンク先を
./review.php?product_id=<!–{$arrProduct.product_id}–>
に変更してください。
あとはスマートフォン用と同じように
- review.tpl
- review_complete.tpl
- review_confirm.tpl
の3つのファイルを
/ec/data/Smarty/templates/mobile/products/
の中にアップロードすれば一応OKなのですが、
モバイル用とスマートフォン用両方に言えることですが
- review.tpl
- review_complete.tpl
- review_confirm.tpl
のファイルをそのままアップすると
<li><input type="image" onclick=" mode.value='return';" onmouseover="chgImgImageSubmit('<!--{$TPL_URLPATH}-->img/button/btn_back_on.jpg',this)" onmouseout="chgImgImageSubmit('<!--{$TPL_URLPATH}-->img/button/btn_back.jpg',this)" src="<!--{$TPL_URLPATH}-->img/button/btn_back.jpg" alt="戻る" name="back" id="back" /></li> <li><input type="image" onmouseover="chgImgImageSubmit('<!--{$TPL_URLPATH}-->img/button/btn_complete_on.jpg',this)" onmouseout="chgImgImageSubmit('<!--{$TPL_URLPATH}-->img/button/btn_complete.jpg',this)" src="<!--{$TPL_URLPATH}-->img/button/btn_complete.jpg" alt="送信" name="send" id="send" /></li>
などの部分では
画像のパスが変わってしまって画像が表示されませんので、
画像のパスを変更するか、
スマートフォンなら
/ec/user_data/packages/sphone/img/button/の中に同じ名前の画像をアップロード
モバイルなら
/ec/user_data/packages/mobile/img/の中にbuttonフォルダを作ってその中に同じ名前の画像をアップロード
すれば画像が表示されます。
もちろんテンプレートを好きなように直接いじってもOK
※モバイルのreview_complete.tplに関しては
「閉じる」ボタンが効かないのでその部分のソースを削除するなどしたほうが良いと思います。
以上でレビュー機能の追加はおわりです。
ほかにもっと良いやり方があるのかもしれませんが・・・