我编写了一个Drupal 7模块,它将大约10个字段添加到块管理配置表单中,并将这些字段的值保存在自己的数据库表中。我的模块没有创建块,而是扩展了任何块的功能,不管是哪个模块创建的。
当任何模块从块表中删除一个块时,我的模块应该删除它自己表中的数据。然而,当这种情况发生时,我的模块如何知道呢?是否有钩子或其他“通用”方法可用于知道块何时已被删除?
没有hook_block_delete(),尽管有hook_node_delete()和hook_entity_delete()。我看过关于创建块的开发指南,以寻找一些线索,但我发现的任何一个都没有给出应该如何删除它们的例子。我还查看了创建/删除块的模块的源代码,比如视图模块,但我不知道它们如何或者是否发送了一个已删除块的通知。
发布于 2019-11-10 21:01:01
在删除块时没有启动钩子,正如您在这里的块钩子列表中看到的那样,block.api.php。
在Drupal论坛这里中有一个主题。
我认为处理这个问题的最好方法是使用hook_form_alter之类的方法。
/**
* Implements hook_form_alter().
*/
function YourModule_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'block_custom_block_delete') {
// You get all information here of the concerned block in $form.
}
}https://drupal.stackexchange.com/questions/288131
复制相似问题