EC-CUBE2.11でブロックのテンプレートのインクルード(読み込み)をする場合の方法について
2011年11月18日
EC-CUBE2.11になってからテンプレートをインクルードの記述が変わったようで、
例えば、カレンダーのブロックをインクルードする場合、以前は
<!--{include_php file=`$smarty.const.HTML_PATH`frontparts/bloc/calendar.php}-->
と書けばインクルードできていたのですが、変数の定義が2.11では変わっているので
<!--{include_php file=`$smarty.const.HTML_REALDIR`frontparts/bloc/calendar.php}-->
というように書く必要があります。(HTML_PATH→HTML_REALDIR)
ただし、これでもなぜか最新版(現在の最新版は2.11.4)ではブロックをインクルードできないようで、実行しているPHPファイルに以下の記述を追記することで表示されるようになりました。
該当するブロックを呼び出すphpのファイルを編集して(カレンダーの場合は、LC_Page_FrontParts_Bloc_Calendar.php)
function init() {
parent::init();
}
となっているところの、init();のあとに
$this->setTplMainpage(‘calendar.tpl’);
※上記はカレンダーの例なので、ファイルによってテンプレートは違います。
とすることで、表示されるようになりました。
function init() {
parent::init();
$this->setTplMainpage('calendar.tpl');
}
2.4のときと比べると、少々ややこしくなっていますね、、。
ちなみに、phpではなく、管理画面から登録するブロック(拡張子.tplファイル)をインクルードする場合は、下記のような記述でいけます。
(2.11から、tplファイルも場所が変わっているので、パスは変わっています)
<!--{include file=`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/blocname.tpl}-->
※上記は、blocname.tplという名前のファイルを読み込む場合の記述です。
[…] […]