CS-Cart.jp開発者ドキュメント
  • はじめに
  • Getting Started
    • CS-Cart開発者向け注意事項
    • CS-Cartの構成
    • デバッグ方法
  • コア
    • Hooks
    • コントローラー
      • Pre&Post コントローラー
    • データベース
      • データベースの構造と命名規則
      • データベース・プレイスホルダー
      • 他のデータベースへの接続
    • ショップフロント
      • ブロック
      • blockメインスキーマ—
      • Dynamic Objects
      • ajaxリクエストの使用方法
      • 特別なCSSセレクター
      • マイクロフォーマット Microformats
      • 通知システム
      • ツールチップ
    • 設定
    • コア関数
    • イベントの通知
    • 言語変数
    • スキーマー
  • アドオン開発
    • フック
      • PHPフック
      • テンプレートフック
    • アドオンチュートリアル
      • 「Hello World」チュートリアル
      • Advanced Add-on チュートリアル
      • 商品リスト、詳細ページのカスタムテンプレートを作成
      • 支払方法の開発
    • アドオンの管理プロセス
    • Add-on スキーマー
      • アドオンの互換性
      • 他のアドオンとの競合・依存設定
    • APIの拡張
    • スキーマーの拡張
    • アドオンのディレクトリ構造
    • アドオンの言語変数
    • .poファイルによる言語ファイルの作成
  • テーマ開発
    • テーマ開発の概要
    • テーマの複製
    • レイアウトの管理
    • トップパネルとヘッダー
    • テーマを使用したショップの設定の変更
    • CSS
    • テーマの言語変数
    • メディアファイル
    • 親テーマ
    • スタイルとビジュアルエディター
    • レイアウトエディター
    • テンプレート
  • デバッグ
    • デバッガー
    • ファイルエディター
GitBook提供
このページ内
  • PHPコード・フックの例
  • PHPフックはいつ使用されるのか?
  • PHPフックの使い方
  • 別のアドオンを他のアドオンで拡張する方法
  1. アドオン開発
  2. フック

PHPフック

前へフック次へテンプレートフック

最終更新 7 か月前

PHPコード・フック(フックポイント)は作成したアドオンに処理を引き渡すことができるようにコア内に定義された箇所です。

フックはコードの必要な部分で特別な関数を呼び出すことによって宣言されます:

<?php
fn_set_hook('hook_name', $params, [$param2], [$paramN]);

フックはとても柔軟なプログラム・テクニックです。 1つの関数に複数のフック・ポイントを設定することができます。

CS-Cart公式サイト上の(英語)を利用することでCS-Cartの全てのバージョンで利用可能なPHPフック・ポイントを確認することが出来ます。

<画像>

PHPコード・フックの例

CS-Cartで使用されているPHPコード・フックの例です。 コードフックは、_ギフト券アドオン_が使用している関数 fn_get_gift_certificate_info() 内で宣言されています。

<?php
....
fn_set_hook('get_gift_certificate_info', $_certificate, $certificate, $type);

PHPフックはいつ使用されるのか?

フックはコアプログラムのメインフローの途中でアドオンが追加のアクションを実行するために便利な方法を提供します。

フックポイントでアドオンはコア・プログラムのコードの実行を遮ることができ、必要な処理を実行して、メインプログラムに実行プロセスを返します。

特定のフックを呼び出した際には、すべての変数がアドオンに直接渡されます。

アドオン内でのフックの呼び出しは関数名がfn_ (アドオン名)(アンダーバー)(呼び出されたフックのフルネーム)という名称で定義することによって実行されます:

<?php
fn_gift_certificates_get_gift_certificate_info($_certificate, $certificate, $type)

上記の関数名は、ギフト券アドオンのget_gift_certificate_info フック内で実行される関数となります。

PHPフックの使い方

あなたのアドオンにPHPフックを利用するには:

  • 先ず使用するフック・ポイントをアドオンのinit.php ファイル内で宣言します:

<?php
...

fn_register_hooks(
   'get_category_data_pre'
);

  ...
  • アドオンのfunc.phpファイル内のフックのアクションを作動するための関数を作成します:

<?php

if ( !defined('AREA') ) { die('Access denied'); }

function fn_my_addon_get_category_data_pre($category_id, $field_list, $get_main_pair, $skip_company_condition, $lang_code)
{
   ...
}

?>

これだけです!

CS-Cartはアドオンが定義するフック・ポイントでフックが発生した際に処理をアドオンに引き渡します。

別のアドオンを他のアドオンで拡張する方法

別のアドオンの処理を拡張する必要がある場合、他のアドオンの中のフックポイントを利用することが可能です。

例えば、_新着情報とメルマガ_アドオンは_SEOアドオン_を使用します。

_新着情報とメルマガ_アドオンのためにSEOアドオンを拡張する必要はなく、SEOアドオンのフックポイントに処理を引き渡すことができます。

design/backend/templates/addons/news_and_emails/addons/seo/hooks/

動作の原理は他のフックと同様です。

例外としては、_新着情報とメルマガ_アドオンからSEOアドオンのフックポイントを利用する場合は、SEOアドオンが有効な場合のみそのフックポイントが利用可能となります。

以下の関数fn_register_hooksの三番目の引数はt他のアドオンが有効な場合のみPHPフックを登録するために追加されました:

<?php
fn_register_hooks( array('get_news_data', '', 'seo') )

この場合のフックポイントに作用する関数名はfn_seo_get_news_dataとなります。これはSEOアドオンが有効な場合のみで呼び出されます。

INFORMATION

全てのアクションは「アドオンを他のアドオンで拡張する」セクションに記述されています。

Hooks base