EC-CUBEで自作ブロックを作ってみた
//EC-CUBEのブロックとは?
管理画面のデザイン管理>PC>レイアウトに行くと、画面構成を表すブロックを並べたような表示が出てきます。
この灰色のブロックは機能・表示をまとめたもので、tplファイル×1とphpファイル×3で構成されています。
ドラッグ&ドロップで、簡単に並べ替えたりする事が出来ます。
//tplファイルとは?
SmartyのTempleteファイルです。
Smartyとは簡単に言うと、PHPに処理を任せて変数を表示する事に特化したテンプレートエンジンです。
内容的には、ほぼHTMLで簡単な条件分岐やループがある。
//ブロックでは何が出来る?
EC-CUBEでは画面に何かを表示するためにはSmartyのテンプレートファイルを使います。
単純なリンクや画像の表示だけならtplファイルだけでも良いのですが、実際にはPHPによる処理があるためブロック(パッケージ化)にして扱いやすくしているようです。
//PHPは、なんで3ファイルも必要なの?
なんたら_Exで二重になるのは、バージョンアップ時に自分の修正が上書きされないためです。
また処理系と表示系で分けられているので、合計3ファイルという訳なのです(^_^;)
実際に追加した3ファイル
eccube/html/frontparts/bloc/test.php(category.phpをコピーして、category->testに置換)
eccube/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Test.php(LC_Page_FrontParts_Bloc_Category.phpをコピーして、同じように置換。カテゴリ取得系の関数はエラーの原因になるので削除)
eccube/data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Test_Ex.php(同様にcategoryの奴をコピーして置換)
//テンプレートファイルの追加
これは管理画面から追加出来ます。画面右上のブロック追加を押すと以下のような画面になるので
ブロック名:好きな名前
ファイル名:test.tpl(LC_Page_FrontParts_Bloc_Test.phpで書いたテンプレート名)
内容:Samartyの文法に従って書く。今回はログイン中ならメールアドレスを表示する
1 2 3 4 5 6 |
<!--{if $tpl_login}--> ログインしている時の処理 <!--{$tpl_data}--> <!--{else}--> ログインしていない時の処理 <!--{/if}--> |
そして、最後にMySQLにテンプレートファイルと処理を行うPHPファイルを関連付けします。
dtb_blocテーブルに今回追加したブロックがあるんで、NULLとなっているphp_pathフィールドに
「frontparts/bloc/test.php」
と処理PHPファイルを設定します。
ここまでやると、ようやくログイン中にはメールアドレスが表示され、ログアウトすると表示されなくなります!
単純な処理と表示なはずですが、意外と大変です…。管理画面よりもファイルやDBを操作しているのがほとんど(^_^;)
以下のページを参考にしました。