【发布时间】:2015-01-16 11:47:11
【问题描述】:
我一直在使用 drupal-7 的 field_collection 和 field_collection_fieldset 模块。我为内容类型配置了一个字段集合字段(无限项)。所以当我查看节点时,它的内容会显示所有字段,包括字段集合项。
现在我想更改页面上呈现的消息,当字段集合项被要求确认删除它时,以及它被成功删除时。 (具体来说,我想更改要删除的项目的标签)。
因为当前字段集合项的标签显示错误(当我尝试删除它时以及它被删除时)。删除标签后显示的消息也有所不同。所以我想改变它。
为此,我发现我可以直接去修改field_collection.pages.inc文件中的2个函数。他们是:
- field_collection_item_delete_confirm
- 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