2016年4月21日木曜日

【ECCUBE3】3.0.9で新しくなったプラグインのフックポイント

ECCUBE3.0.9からプラグインのフックポイントが「ページ毎」から「ページ毎&定義された場所」へと変更されました。

これが非常に便利で、変更前は本体の処理の前後にしか処理を差し込めなかったのが、本体の処理の途中(フックポイントが定義されていれば)に処理を差し込む事が出来ます。

今までは本体で「フォームの入力が確定⇒メールの送信」という処理をしている場合。
処理の前後にしかプラグインでの処理を差し込めませんでした(○の場所)。
「○⇒フォームの入力が確定⇒メールの送信⇒○」

「フォームの入力が確定⇒○⇒メールの送信」
なので、上記の様にフォームの確定とメールの送信の間に何か処理を入れたい場合はプラグイン側で「フォームの入力が確定⇒プラグインでの処理⇒メールの送信」をやって、
その後本体の処理はキャンセルする等の処理が必要でした。
本体側の処理もプラグインでやるという事が必要でした。

3.0.9からは「フォームの入力が確定⇒○⇒メールの送信」
この○の部分に個別フックポイントが用意されているため、そこに処理を挟むだけでフォームの確定やメール送信の処理に関して気にする必要がなくなりました。

個別フックポイントの詳細はこちらに。
プラグイン仕様書

個別フックポイントを実際に見ていきましょう。
試しに商品詳細ページを見てみます。
src/Eccube/Controller/ProductController.php

上記コントローラーのdetail内に下記の様な記述があります。ここが実際のフックポイントになります。
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_PRODUCT_DETAIL_INITIALIZE, $event);

上記フックポイントにイベント定義する場合は
event.ymlに下記の様に記述すればOKです。
front.product.detail.initialize
- [hoge, NORMAL]


下記ファイル内にイベント一覧が定義されているので
src/Eccube/Event/EccubeEvents.php

FRONT_PRODUCT_DETAIL_INITIALIZEは下記の様に記述されているので、=の右側をevent.ymlに書けばOKです。
const FRONT_PRODUCT_DETAIL_INITIALIZE = 'front.product.detail.initialize';

あとはコントローラーに処理を書いていきます。


この新しくなったフックポイントを利用して作ったのが、「在庫切れ商品通知(3.0系)」プラグイン。

注文が完了した時のフックポイントに在庫数を取得してしきい値以下になったらメールをする処理をはさんでいます。

これを3.0.8以下で実装しようとすると注文完了の処理自体もプラグインでする必要があったので、3.0.9になって便利になりました。

Related Posts:

  • 【ECCUBE】バナーやプラグインのクリック数を調べるバナーを貼ったけど、どれ位クリックされてるの?? 新着商品やニュース、最近売れた商品やランキング等、販促系プラグインを色々入れてみたけど、どのプラグインが効果あるの?? アナリティクスで解析しても、どのキーワードで検索されたか、どこから来たか、どの商品が人気かはわかるけど、自分たちの作ったバナーや… Read More
  • EC CUBE3のインストール(β版)β版のECCUBE3を macのローカル環境(MAMP Mysql)へインストールしてみます。 コマンドラインを立ち上げ 下記コマンドを打ち込んでgithubからeccbe3をクローンする。 今回はローカルで動かすので、MAMPのhtdocsフォルダにダウンロード。 git clone http:/… Read More
  • テキストエディターAtomで楽天goldのファイルを直で編集楽天goldを運用していて、FTPしか使えず、FTPを開いて、該当のファイルをダウンロードして、バナーや商品を追加し、FTPにアップロードする。 運用上の一連の流れですが、これをAtomというテキストエディターを使って直でFTPのファイルを編集して行きましょう。 まずAtomをダウンロードしてきま… Read More
  • 【ECCUBE3】最近購入された商品のブロックの追加ECCUBE3にて最近購入された商品を表示するブロックを追加していきましょう。 ECCUBE2系の頃とは作り方すっかり変わっていますが、慣れてしまえば簡単な追加はやりやすいです。 最終的な表示は下記の様になります。 まずは管理画面からブロックを追加しましょう。 コンテンツ管理>ブロック管理から新… Read More
  • ECCUBE3正式版のインストール(さくらVPS)さくらVPSサーバへ晴れて正式に3となったECCUBEをサーバーへインストールしていきす。 サーバーの構成とバージョンは下記 CentOS:6.6 Apache:2.2.15 PHP:5.6.10 PostgreSQL:9.4.1 phpPgAdminはインストールされているものとします。 E… Read More

0 コメント:

コメントを投稿