フックを作成する方法は?


18

他のDrupalモジュールが使用する独自のフック(Drupalコアが作成するものと同様)を作成するにはどうすればよいですか?

回答:


20

実際にはフックを作成しません。あなたのようなヘルパー関数を使用しmodule_invoke_all()module_invoke()またはdrupal_alter()予想される名前のパターンに一致するすべての関数を呼び出すために。通常、呼び出された関数はで見つかり module_implements()ます。

フックが機能する必要がない場合でも、ベストプラクティスは、ドキュメンテーションコメントMODULE.api.phpを使用して空のスタブ hook_NAME関数を作成することでドキュメント化することです。


6
ドキュメンテーションに関する+1。これは、Drupal 7の新しいコーディング標準であり、多くのcontribモジュールがD6でも使用し始めました。空の関数の代わりに、そのフックで何ができるかを示すための実装例を提供するとさらに良いことに注意してください。
ベルディール

1
通常、そのフックの実際の実装がある場合、MODULE.api.phpにリストされているフックのコードを提供します。
キアムルノ

0

また、hook_trigger_infoを使用してフックを作成し、新しいフックを作成することもできます。また、モジュールに実装する必要があります。例として、ノードのアーカイブを作成し、古いノードをその中に配置するとします。また、アーカイブ操作が完了したときにフックをトリガーすることもできます。このようなものになるだろう

function hook_trigger_info() {
    return array(
            'node' => array(
                    'archive_nodes' => array(
                        'label' => t('Archive old nodes'),
                    )
            )
    );
} 

フックを定義した後、モジュールはmodule_invoke()またはmodule_invoke_all()を使用してフックとアクションを実装します。

triggerモジュールを有効にして、ノードタブの下にこの新しいフックを表示できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.