如何创建一个钩子?


18

如何为其他Drupal模块创建自己的钩子(类似于Drupal核心创建的钩子)?

Answers:


20

您实际上并没有创建钩子。您可以使用诸如之类的帮助器函数module_invoke_all()module_invoke()或者drupal_alter()调用与预期名称模式匹配的所有函数。调用的函数通常在中找到 module_implements()

即使不需要挂钩,最佳实践是MODULE.api.php通过创建带有文档注释的存根 hook_NAME函数来对其进行记录


6
+1关于文档,这是Drupal 7的新编码标准,许多contrib模块也开始将其用于D6。请注意,提供一个示例实现来显示该钩子可以完成的操作,而不是空函数,效果更好。
Berdir 2011年

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模块以在节点选项卡下查看此新钩子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.