Questions tagged «hooks»

将其用于允许扩展模块功能而无需编辑其代码的机制。

3
是否仍使用hook_init()?如果不再使用,如何转换实现hook_init()的代码?
在Drupal.org API上,我注意到Drupal 8没有记录hook_init()。在更改记录中,我发现Bootstrap钩子不再存在,它指向摆脱所有'bootstrap'钩子,而Bootstrap钩子在这里据说是hook_boot()和hook_exit(); 什么也没说hook_init()。 我在Drupal 8源代码中搜索hook_init,发现以下代码。第一个是hook_init()在评论中提及的内容;其他两个似乎是一个hook_init()实现,但是它们都得到了我不期望的参数。 function overlay_enable() { if (strpos(current_path(), 'admin/modules') === 0) { // Flag for a redirect to <front>#overlay=admin/modules on hook_init(). $_SESSION['overlay_enable_redirect'] = 1; } } /** * Implements hook_init(). */ function phptemplate_init($template) { $file = dirname($template->filename) . '/' . $template->name . '.theme'; if (file_exists($file)) { include_once …
10 8  hooks 

3
如何使全新模块依赖于正常运行所需的最低版本的Drupal 7?
我正在开发一个全新的模块(尚无任何站点在使用它)。它需要特定的Drupal版本,因为它使用了hook_taxonomy_term_view()Drupal核心版本7.17中引入的挂钩。 我想避免使用例如Drupal 7.16或任何早期版本的Drupal core在站点上启用我的模块。高于7.17的更高版本的Drupal应该很好。 我的问题:如何使我的模块依赖于最低的Drupal 7.17版本? 注意:对于已安装模块的站点,我不需要(不必担心)解决方案。因此,不需要在7.17之前的Drupal版本中以某种方式禁用它。
10 hooks 

1
如何在不交互的钩子之间传递数据?
如何在钩子之间或菜单回调与钩子之间不交互的钩子之间传递数据? 如果两个钩子有一个共同的参数,并且该参数通过引用传递,那很容易。当挂钩,菜单回调和挂钩没有共同的参数时,我该怎么办?
10 hooks 

1
主题挂钩与模块挂钩
有时,当我尝试应用一个钩子时,只是意识到它应该在模块文件中。 有没有一种方法可以知道可以在主题的template.php文件中或模块中实现哪些钩子?
10 hooks 

4
向节点/编辑和其他形式添加JS和CSS的正确方法
我正在制作一个包含很多JS的网站,我想知道应该将JS代码放在哪里。理想情况下,我希望每个模块都保留JS,而不是主题层。某些内容可能显示为块等。 但是我在缓存方面遇到了一些问题。在我的示例中,我需要将JS&CSS添加到节点编辑表单中。我使用过hook_block_view,但已缓存。因此,如果节点编辑表单中存在错误,则不会调用drupal_add_js和drupal_add_css函数。hook_node_prepare似乎也是如此。 您将在哪里输入JS&CSS层?并且即使在节点编辑表单中有错误,也有被调用的钩子吗?
10 theming  hooks 


2
卸载模块时删除所有变量的最佳方法
我正在编写一个模块,其中写入了多个变量(每个内容类型分别为三个,四个变量,以及其他)。 我应该使用哪种方法在hook_uninstall上删除它们? 执行搜索“ mymodule_ *”变量的查询是否安全? 还是应该为内容类型和搜索变量循环,所以多次调用variable_del?

1
Drupal不会调用我的钩子
我正在开发一个模块,但是我要添加的钩子没有从Drupal调用。它发生在多个钩子上。 我阅读了有关挂钩的文档,但找不到任何可以解释为什么发生这种情况的内容。我确认我使用了正确的参数,并返回了正确的值。 我究竟做错了什么?我有什么想念的吗?
9 hooks 

1
如何使用hook_node_presave更改字段的值
基本上,我想将名字和姓氏放到$ node-> field_par_contact_name中 但这给了我警告。(见下文) function partnership_node_presave($ node){ if($ node-> type =='伙伴关系'){ $ first_name = $ node-> field_par_contact_first_name ['und'] [0] ['name']; $ surname = $ node-> field_par_contact_surname ['und'] [0] ['name']; // https://drupal.org/project/field_hidden //隐藏变量 $ node-> field_par_contact_name ['und'] [0] ['value'] = $ first_name。''。$ surname; //保存后警告:array_flip():只能翻转STRING和INTEGER值!在DrupalDefaultEntityController-> load()中(... / drupal-7.23 / includes / entity.inc的第173行 …
9 hooks 

3
如何在节点/编辑页面上加载所见即所得api插件所需的额外javascript文件?
我正在使用用于Drupal 7的WYSIWYG API模块构建一个插件,该插件将向受支持的编辑器的工具栏添加一个按钮。 我正在使用hook_wysiwyg_plugin()挂钩在编辑器工具栏上创建一个新按钮,但是我需要加载其他一些JavaScript文件。该hook_wysiwyg_plugin()挂钩似乎允许您指定一个JS和CSS文件。 如何加载插件javascript所需的额外必需的javascript文件? 我已经实现hook_library()了定义一个库,即js / css文件,但是不确定如何将其连接到所见即所得api,以便它们加载到节点/编辑屏幕上?
9 7  hooks  wysiwyg 

1
如何在正文结束标记之前插入HTML?
我正在寻找在结束body标签之前将任意HTML内容插入页面的最佳方法,类似于drupal_add_js()将JavaScript添加到页面底部的方法。 我来自Wordpress的背景,在Wordpress中可以通过使用wp_footer()挂钩来完成。 我已经研究了使用hook_page_alter(),但是我想知道这是否是执行此操作的正确方法,或者是否有更好的方法来完成此任务。
8 7  hooks 

3
如何在节点标题中嵌入节点的NID?
我知道存在自动节点标题模块,但是仅适用于Drupal 7。 单击提交后,是否可以使用NID自动分配标题?我知道在单击提交按钮之前NID不存在。如何将NID嵌入标题中? 一个钩子会用什么?
8 8  hooks  nodes 

4
如何使用presave挂钩将字段值保存为节点标题?
我在节点类型“天”中有一个自定义日期字段。保存(或编辑然后保存)节点后,我想获取field_date值(而不是发布日期)并将其保存到title字段中。 我想知道如何使用一个模块来: hook_presave 获取字段值 将标题设置为字段值 保存节点
8 nodes  8  hooks  entities 

4
是否可以挂钩到variable_set()事件?
我想跟踪系统更改事件,使其可恢复。当检查variable_set()时,我看到没有为该事件提供钩子。有什么办法可以做到吗? 我可以更改以挂钩到设置表格,但是要跟踪很多设置表格,如果我可以直接挂钩到variable_set(),则代码将变得更加简单。 我还可以使用功能+ Strongarm模块跟踪变量的更改,但是最好是Drupal管理员可以浏览变量历史记录而无需触摸代码。
8 7  hooks 

4
hook_init()的替代方法
我hook_init()用来检查用户的上次访问时间。如果最后访问时间是昨天,我将增加一个计数器并设置一些变量。 问题在于,对于相同的页面加载,hook_init()有时执行的次数超过一次(我可以使用看到dsm()),因此我的代码多次执行,导致变量错误。 为什么hook_init()执行不止一次? 解决我的问题的最佳方法是什么?我应该使用另一个挂钩吗? 我对此进行了更多研究: 我搜索了对hook_init()的调用(搜索了string module_invoke_all('init');),但只找到了核心调用)。我不知道这可以用不同的方式称呼。 这是我的hook_init() function episkeptis_achievements_init(){ dsm('1st execution'); dsm('REQUEST_TIME: '.format_date(REQUEST_TIME, 'custom', 'd/m/Y H:i:s').' ('.REQUEST_TIME.')'); } 这是输出: 1st execution REQUEST_TIME: 09/07/2012 11:20:32 (1341822032) 然后,将dsm()消息更改为dsm('2nd execution');并再次执行,这是输出: 1st execution REQUEST_TIME: 09/07/2012 11:20:34 (1341822034) 2nd execution REQUEST_TIME: 09/07/2012 11:22:28 (1341822148) 您可以看到该代码执行了两次。但是,第一次执行代码的旧副本,第二次执行更新的副本。也有2秒的时差。 这是php 5.3.10的d7版本
8 7  hooks 

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.