Drupal在删除字段集合时显示自定义消息

时间:2015-01-16 11:47:11

标签: php drupal drupal-7 drupal-hooks

我一直在使用drupal-7的 field_collection field_collection_fieldset 模块。我为内容类型配置了字段集合字段(无限制项)。因此,当我查看节点时,其内容将显示所有字段,包括字段集合项。

现在我想更改页面上呈现的消息,当要求确认删除字段集合项目时,以及何时成功删除它。 (具体来说,我想更改要删除的项目的标签。)

因为当前字段集合项的标签显示错误(当我尝试删除它时以及删除它时)。删除标签后,显示的消息也不同。所以我想改变它。

为此,我发现我可以直接去修改 field_collection.pages.inc 文件中的2个函数。他们是:

  1. field_collection_item_delete_confirm
  2. field_collection_item_delete_confirm_submit
  3. 例如:更改以下行:

    t('Are you sure you want to delete %label?', array('%label' => $field_collection_item->label()))
    

    对此:

    t('Are you sure you want to delete %label?', array('%label' => 'First Collection'))
    

    而且:

    drupal_set_message(t('%label has been deleted.', array('%label' => drupal_ucfirst($field_collection_item->label()))));
    

    对此:

    drupal_set_message(t('%label has been deleted.', array('%label' => 'First Collection')));
    

    但我认为这不是一种标准方法。所以我想在我的自定义模块中使用一个钩子来覆盖这些函数。我不确定在我的自定义模块中使用什么钩子。有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

由于Clive提出了宝贵的建议,我已经解决了我的问题。

这就是我所做的,处理删除节点的字段集项:

  1. 在我的自定义模块中创建了一个类型为 hook_node_view()的挂钩,并覆盖了字段集合项的删除链接,以便它们指向自定义模块中声明的自定义路径&# 39; s hook_menu()
  2. 现在,自定义路径将映射到模板文件(传递字段集合项ID)。
  3. tpl文件中的逻辑使用 entity_delete_multiple()处理字段集合项的删除(由id传递),并设置自定义消息以显示回节点视图页面。
  4. 完成:) 这样,我不需要修改field_collection模块的现有文件,仍然可以实现我需要的自定义功能。 Drupal很棒!