保存后的回调?

问题描述 投票:10回答:5

每次更新节点时如何执行功能?我尝试使用hook_nodeapi,但是看起来该钩子已从Drupal 7中删除。

我想做的是,

  1. 在我的内容类型中添加一个名为“主图像(布尔)”的新字段,以便管理员设置主图像。
  2. 我将使用“视图”模块显示节点,但按“主图像”字段和添加日期对节点进行排序。
  3. 因此第一个节点始终是主图像。
  4. 为此,我需要确保始终只有一个节点的'主映像'设置为true。

每次更新节点时如何执行功能?我尝试使用hook_nodeapi,但是好像该钩子已从Drupal 7中删除。我要做的是,向我的....>

drupal hook drupal-7
5个回答
8
投票

挂钩尚未删除,但为每个$ op拆分为单独的挂钩。

参见:http://api.drupal.org/api/search/7/hook_node


13
投票

当前,在数据库中插入/更新/删除节点/实体后,Drupal核心不提供任何执行操作的挂钩。例如,您不能在插入节点后发送电子邮件提及该节点,因为Drupal使用SQL事务,并且在调用钩子节点预保存时该节点尚未完全写入数据库,因此如果由于任何原因回滚该事务,用户将收到虚假邮件。


7
投票

我想hook_entity_presave可能是您要寻找的钩子,如果您想在更新节点之前采取行动:


3
投票

只需稍微完成一下,如果在保存/更新节点后需要执行任何操作,则可以使用模块@ sina-salek建议您,也可以使用此代码:


0
投票

另一种实现此目的的方法是,使用您的自定义类扩展Node实体,并在// Same for hook_node_save! function my_module_node_update($node) { if ($node->type == 'content_type_name') { // Invoke your callback function AFTER the node is updated. drupal_register_shutdown_function('_my_module_the_function_to_call', $node); } } function _my_module_the_function_to_call($node) { // do stuff... } 方法内调用您的代码。保存或更新节点时将调用此方法。

© www.soinside.com 2019 - 2024. All rights reserved.