EC-CUBE:“5分で実装” EC-CUBE(v2.13.2)のindex.tplに新着情報欄を実装する
EC-CUBEは、バージョンが変わると実装コードも派手に変わるので情報が腐るのも早いです。
ま、仕方ないんでしょうけど。
EC-CUBEで作られた既存のECサイトの修正を頼まれるとたまにあるのが、なぜか新着情報部分がindex.tplを修正して更新してるものがあります。
つまり、管理画面の『コンテンツ管理>新着情報管理』では更新せずに『デザイン管理』からテンプレートをいじらせる、というもの。
リスクあり過ぎで、よく今までやってたな。作ったやつは誰だ!ってな感じでゾッとします。
というわけで、EC-CUBEのテンプレートファイル(index.tpl)に新着情報欄を実装してみます。
修正するファイルは4つ。
・LC_Page_FrontParts_Bloc_News.php
・news.tpl
・index.tpl
・contents.css
修正する順番も上記の並びで変えていくと、公開されているサイトの場合はあまり支障がないと思われます。
というわけで、修正内容は以下の通りです。
LC_Page_FrontParts_Bloc_News.php
40行目あたりにあるinit()メソッド内の「parent::init();」直下にtplをセットするため追記。
public function init() { parent::init(); /* ↓コレを追記 */ $this->setTplMainpage('news.tpl'); }
news.tpl
ここは、基本的にデフォルトをいじって自分の必要な物だけ残せばいいと思います。
ここで入れてるのは、RSSと日付(dt)、新着情報のタイトル(dt)と本文(dd)です。
<!--{strip}--> <div id="news_area"> <h2><img src="<!--{*$TPL_URLPATH*}-->img/title/tit_bloc_news.png" alt="新着情報" /><span class="rss"><a href="<!--{*$smarty.const.ROOT_URLPATH*}-->rss/<!--{*$smarty.const.DIR_INDEX_PATH*}-->" target="_blank"><img src="<!--{*$TPL_URLPATH*}-->img/button/btn_rss.jpg" alt="RSS" /></a></span></h2> <dl id="newsarea" class="newslist"> <!--{section name=data loop=$arrNews}--> <!--{assign var="date_array" value="-"|explode:$arrNews[data].cast_news_date}--> <dt><!--{$date_array[0]}-->年<!--{$date_array[1]}-->月<!--{$date_array[2]}-->日</dt> <dt class="news_ttl"> <a <!--{if $arrNews[data].news_url}--> href="<!--{$arrNews[data].news_url}-->" <!--{if $arrNews[data].link_method eq "2"}--> target="_blank" <!--{/if}--> <!--{/if}--> ><!--{$arrNews[data].news_title|h|nl2br}--></a> </dt> <dd class="mini"><!--{$arrNews[data].news_comment|h|nl2br}--></dd> <!--{/section}--> </dl> </div> <!--{/strip}-->
index.tpl
トップページとなる「index.tpl」に追記するのはたった一行。
<!--{ include_php file=`$smarty.const.HTML_REALDIR`frontparts/bloc/news.php }-->
コレだけで表示できると思います。
contents.css
別にここでなくてもいいんですけど、適当にスタイル記述しとけばいいです。
たったコレだけ。
この辺はバージョンが上がっても変わらなそうだな。
ただclassファイルの記述する位置が変わってたりすると、急いでるときに見つからなかったりして面倒。