Как создать крючок?

18

Как я могу создать свой собственный хук (аналогичный тому, который создает ядро ​​Drupal) для использования другими модулями Drupal?

markdorison
источник

Ответы:

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, если есть фактическая реализация этой ловушки.
kiamlaluno
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модуль, чтобы увидеть этот новый хук на вкладке узла.

М ама Д
источник