Drupal показывает пользовательское сообщение при удалении коллекции полей

Я использовал field_collection а также field_collection_fieldset модули друпал-7. Я настроил полевая коллекция поле (неограниченное количество элементов) для типа контента. Поэтому, когда я просматриваю узел, его содержимое отображается со всеми полями, включая элементы коллекции полей.

Теперь я хочу изменить сообщение, отображаемое на странице, когда элемент коллекции полей запрашивается подтверждение для его удаления и когда он удаляется успешно. (В частности, я хочу изменить этикетка элемента удаляется).

Потому что в настоящее время метка элемента коллекции полей отображается неправильно (когда я пытаюсь удалить его и когда он удаляется). Кроме того, отображаемое сообщение отличается после удаления метки. Поэтому я хочу изменить это.

Для этого я обнаружил, что могу напрямую перейти и изменить 2 функции в field_collection.pages.inc файл. Они есть:

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

Но я думаю, что это не стандартный подход. Поэтому я хотел бы использовать хук в моем пользовательском модуле для переопределения этих функций. Я не уверен, какие хуки использовать в моем пользовательском модуле. Может кто-то помочь мне с этим ?

0

Решение

Я достиг решения своей проблемы, благодаря Clive за его ценные предложения.

Вот что я сделал, чтобы обработать удаление элемента коллекции полей для узла:

  1. Создал крючок типа hook_node_view () в моем пользовательском модуле и переопределить ссылку удаления для элементов коллекции полей, чтобы они указывали на пользовательский путь, который объявлен в моем пользовательском модуле hook_menu ().
  2. Теперь пользовательский путь сопоставляется с файлом шаблона (передавая идентификатор элемента коллекции полей).
  3. Логика внутри файла tpl обрабатывает удаление элемента коллекции полей (передается по идентификатору), используя entity_delete_multiple () и устанавливает пользовательское сообщение для отображения обратно на страницу просмотра узла.

Готово 🙂
Таким образом, мне не нужно изменять существующие файлы модуля field_collection, и при этом по-прежнему достигать требуемой пользовательской функциональности. Друпал это здорово!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]