PHPフック
PHPコード・フック(フックポイント)は作成したアドオンに処理を引き渡すことができるようにコア内に定義された箇所です。
フックはコードの必要な部分で特別な関数を呼び出すことによって宣言されます:
フックはとても柔軟なプログラム・テクニックです。 1つの関数に複数のフック・ポイントを設定することができます。
CS-Cart公式サイト上のHooks base(英語)を利用することでCS-Cartの全てのバージョンで利用可能なPHPフック・ポイントを確認することが出来ます。
<画像>
PHPコード・フックの例
CS-Cartで使用されているPHPコード・フックの例です。
コードフックは、_ギフト券アドオン_が使用している関数 fn_get_gift_certificate_info()
内で宣言されています。
PHPフックはいつ使用されるのか?
フックはコアプログラムのメインフローの途中でアドオンが追加のアクションを実行するために便利な方法を提供します。
フックポイントでアドオンはコア・プログラムのコードの実行を遮ることができ、必要な処理を実行して、メインプログラムに実行プロセスを返します。
特定のフックを呼び出した際には、すべての変数がアドオンに直接渡されます。
アドオン内でのフックの呼び出しは関数名がfn_ (アドオン名)(アンダーバー)(呼び出されたフックのフルネーム)
という名称で定義することによって実行されます:
上記の関数名は、ギフト券アドオン
のget_gift_certificate_info
フック内で実行される関数となります。
PHPフックの使い方
あなたのアドオンにPHPフックを利用するには:
先ず使用するフック・ポイントをアドオンの
init.php
ファイル内で宣言します:
アドオンの
func.php
ファイル内のフックのアクションを作動するための関数を作成します:
これだけです!
CS-Cartはアドオンが定義するフック・ポイントでフックが発生した際に処理をアドオンに引き渡します。
別のアドオンを他のアドオンで拡張する方法
別のアドオンの処理を拡張する必要がある場合、他のアドオンの中のフックポイントを利用することが可能です。
例えば、_新着情報とメルマガ_アドオンは_SEOアドオン_を使用します。
_新着情報とメルマガ_アドオンのためにSEOアドオンを拡張する必要はなく、SEOアドオンのフックポイントに処理を引き渡すことができます。
design/backend/templates/addons/news_and_emails/addons/seo/hooks/
動作の原理は他のフックと同様です。
例外としては、_新着情報とメルマガ_アドオンからSEOアドオンのフックポイントを利用する場合は、SEOアドオンが有効な場合のみそのフックポイントが利用可能となります。
以下の関数fn_register_hooks
の三番目の引数はt他のアドオンが有効な場合のみPHPフックを登録するために追加されました:
この場合のフックポイントに作用する関数名はfn_seo_get_news_data
となります。これはSEOアドオン
が有効な場合のみで呼び出されます。
INFORMATION
全てのアクションは「アドオンを他のアドオンで拡張する」セクションに記述されています。
最終更新