EC-CUBE4ではEC-CUBE3系と異なり、プラグインのテンプレートをapp/template内に配置してオーバーライドすることができずテンプレートを修正したいときにプラグインのテンプレートを直接修正するか悩むようなことがちらほらありました。

しかしEC-CUBE4.0.4では待望のプラグインテンプレートをオーバーライドする機能が加わっていますので、弊社のプラグイン「商品ページポイント数表示 for EC-CUBE4」を例にとってご紹介いたします。

プラグインの宣伝

商品詳細ページにポイント数を表示するプラグインです。規格選択時のポイント数動的表示にも対応しています。

獲得ポイント数表示プラグイン

https://www.ec-cube.net/products/detail.php?product_id=2102

ポイント数を表示しているソースコードはどこ?

app/Plugin/ShowPointAmount4/Resource/template/product_detail_point.twig というファイルで商品詳細ページのテンプレートにポイント数を表示しています。

ec-productRole__priceというクラスの要素の直後にポイント数のブロックを挿入するという内容になっています。つまり、もしテンプレートを修正していて、ec-productRole__priceというクラスがProduct/detail.twig内から削除されているとプラグインが動作しません。

app/template/pluginでproduct_detail_point.twigをオーバーライド

そこでproduct_detail_point.twigをコピーして、app/template/plugin/ShowPointAmount4/product_detail_point.twig に配置します。
app/template/plugin/[プラグインコード]の中に配置するのがポイントです。

このファイルは好きに書き換えることが可能ですので、ec-productRole__priceクラスの直後ではなく好きな場所に表示することが可能です。すばらしいEC-CUBE4.0.4!!!

Product/detail.twigに直接書いた方が早いという話も..

ただ実際はプラグインのテンプレートをオーバーライドするよりもProduct/detail.twigに直接書いてしまった方が早いです。
その際のポイントは「is defined」を使ってプラグインが無効化された時にエラーとならないよう対応しておくことです。

しかし元のテンプレートをなるべく修正したくないような時もありますので、プラグインテンプレートのオーバーライドは覚えておいて損はない技だと思います。