【问题标题】:Drupal show a custom message when deleting a field collectionDrupal 在删除字段集合时显示自定义消息
【发布时间】:2015-01-16 11:47:11
【问题描述】:

我一直在使用 drupal-7 的 field_collectionfield_collection_fieldset 模块。我为内容类型配置了一个字段集合字段(无限项)。所以当我查看节点时,它的内容会显示所有字段,包括字段集合项。

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

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

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

  1. field_collection_item_delete_confirm
  2. field_collection_item_delete_confirm_submit

例如:更改以下行:

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')));

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

【问题讨论】:

  • 您要覆盖的代码在哪里?表单函数/页面回调/其他?
  • 希望是表单功能。因为第一个函数是在我点击节点视图中字段集合旁边的删除链接时触发的,而第二个函数是在成功删除时触发的。
  • 听起来会是这样。 hook_form_alter()hook_form_FORM_ID_alter() 就是你要找的东西
  • 当我点击删除按钮时,我可以使用 hook_form_alter() 来更改页面上显示的内容。但是是否可以保留现有内容并仅更改要删除的项目的标签?
  • 我不明白你的意思——如果你指的是这个,你可以覆盖 hook_form_alter 中的表单提交函数。但它可能会变得复杂,通过 hook_menu_alter 提供新的页面回调可能更容易

标签: php drupal drupal-7 drupal-hooks


【解决方案1】:

我的问题已经得到解决,感谢Clive提出的宝贵建议。

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

  1. 在我的自定义模块中创建了一个 hook_node_view() 类型的钩子,并覆盖了字段集合项的删除链接,以便它们指向自定义路径,该路径在我的自定义模块的 hook_menu()。
  2. 现在自定义路径映射到模板文件(传递字段集合项 ID)。
  3. tpl 文件中的逻辑使用 entity_delete_multiple() 处理字段集合项(由 id 传递)的删除,并设置自定义消息显示回节点视图页面。

完成:) 这样,我不需要修改 field_collection 模块的现有文件,仍然可以实现我需要的自定义功能。 Drupal 很棒!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2015-10-10
    相关资源
    最近更新 更多