Smartyとプラグイン
EC-CUBEではSmartyというテンプレートエンジンを使用しています。data/Smarty/templates配下に以下のディレクトリが作成されています。
- admin
- default
- mobile
- sphone
管理機能はadmin配下に、フロント機能はPC用についてはdefault配下に、携帯電話用についてはmobile配下に、そしてスマホ用はsphone配下に各機能毎に階層化されてtplファイルが配置されています。tplファイルはHTMLにSmarty変数やSmarty関数を埋め込んだもので、検索画面や一覧表示画面といったユーザーインターフェース部分になります。例えばデータベースから検索条件に適合した内容を抽出するサーバー機能のphpプログラムから一覧表示画面のtplファイルに出力することで一覧表示が行われます。抽出機能と画面表示機能を分離することで開発作業の効率化を図るとともに、Smartyの機能で高速化も図られます。
管理機能の会員登録画面のテンプレートはadmin/customer/edit.tplです。その入力確認画面はadmin/customer/edit_confirm.tplです。PC用のフロント機能についてはヘッダー部分がdefault/header.tpl、商品の一覧画面はdefault/products/list.tplとなります。入力項目や表示内容を追加したり修正したりする場合は、テンプレートとして該当するファイルをカスタマイズすることになりますが、直接カスタマイズしたのでは、EC-CUBEのバージョンアップに対応できなくなるばかりでなく、修正箇所がわからなくなりシステムのメンテナンスができなくなってしまう可能性があります。そこでプラグインの機能を使用します。
EC-CUBEのプラグイン
EC-CUBEのプラグインでは次のことが出来ます。
- EC-CUBE本体処理へ介入して処理・結果を書き換える。
- EC-CUBE本体のテンプレートを変更する。
ここでは画面入出力内容のカスタマイズにプラグインの2の機能を使用します。入出力項目のカスタマイズが必要な場合には、データベースのテーブルへの列追加が必要になるケースがありますので、画面の変更と合わせてテーブルへの列追加もプラグインに組み込み、本番環境への移植も容易にすることを目的とします。
なお、下記「プラグイン仕様書」を参考にされるといいでしょう。
拡張クラスのカスタマイズ
サーバー機能のphpプログラムは、data/class配下に機能的に階層化され登録されています。
管理機能の会員登録についてはpages/admin/customer/LC_Page_Admin_Customer_Edit.phpですが、dtb_customerに関する関数がSC_Customer.phpやhelper/SC_Helper_Customer.phpに記述されています。
直接カスタマイズする場合はこの部分を修正・追加するわけですが、ここでは拡張クラスにカスタマイズ部分を記述するという方式を取ります。
EC-CUBEではdata/class_extends配下にほぼ同じ構成でファイルが登録されています。classと異なるのは、class_extends配下ではディレクトリ名には「_extends」がファイル名には「_Ex」が付けられているくらいです。また、ファイル内容はclass内の同機能のclassを継承しているという宣言があるだけで、中身は空っぽとなっています。カスタマイズしたいclassに記述されている関数を、class_extendsに移植しその内容を修正すると、実行時にはclassの中は元のままでもカスタマイズした内容でプログラムが機能します。
拡張クラスのカスタマイズが推奨されている方式ですが、バージョンアップの際対応しづらいとか、一部正しく機能しない場合があるとか、開発効率が落ちるといった問題があることを承知のうえで、ここでは「元々の機能が保証される」「カスタマイズした内容が明確になる」という理由だけで拡張クラスのカスタマイズ方式としています。直接カスタマイズすることを選択しても構いません。
次回は今回のカスタマイズ内容について解説します。