Контроль сообщений Drupal? - PullRequest
       8

Контроль сообщений Drupal?

0 голосов
/ 10 сентября 2010

Есть ли модуль или способ управления Drupal Message.Т.е. сообщение, которое вы видите после создания контента, например «Список автомобилей с названием bla был создан».Я хочу, чтобы центральный пункт контролировал эти сообщения.Большинство из них я не хочу отображать.

Ответы [ 5 ]

3 голосов
/ 13 сентября 2010

Я готовил пост в блоге об этом, но уже могу сказать несколько подсказок:

  • Используйте Переопределение строк модуль для замены сообщения(через пользовательский интерфейс).Если вы хотите скрыть это, оставьте это поле пустым.Эти замены хранятся в глобальных переменных (не требуется доступ к базе данных, поэтому нет снижения производительности), но по той же причине не рекомендуется использовать ее для сотен строк, только немногие из них.
  • Используйте http://www.michaelbarton.name/2010/07/09/drupal-module-status-messages-alter/ Этот модуль очень новый, но выглядит многообещающе.Это может быть более мощным решением для разработчиков, поскольку позволяет включать переменные в строку, регулярное выражение и т. Д.

Надеюсь, это поможет, я оставлю здесь комментарий, когда буду писать статью во времянеделя.

2 голосов
/ 24 апреля 2011

Вы также можете попробовать модуль Disable Messages , чтобы отключить показ определенных сообщений конечным пользователям. Вот цитата со страницы проекта:

Предоставляет владельцу сайта параметры для отключения определенных сообщений, отображаемых для конечных пользователей. Базовая система сообщений drupal, предлагаемая drupal_set_message, является отличным способом для модулей отправлять сообщения конечным пользователям. Однако не все владельцы сайтов drupal стремятся показать все сообщения, отправленные ядром drupal, и все модули своим пользователям. Этот модуль дает администраторам сайта достаточно мощный способ отфильтровать сообщения, показанные конечным пользователям.

Некоторые из его функций:

  • Отфильтровывать сообщения, которые точно соответствуют полнотекстовой строке.
  • Отфильтровывать сообщения, которые соответствуют регулярному выражению.
  • Разрешения на конкретное скрытие всех сообщений данного типа от любой роли.
  • Отключить всю фильтрацию для определенных пользователей.
  • Отключить всю фильтрацию для определенных путей.
  • Применение фильтрации только для определенных путей.
  • Отладка системы для получения сообщений в HTML, не показывая их конечным пользователям.
2 голосов
/ 10 сентября 2010

Не думаю, что вы можете управлять такими сообщениями.Вы не будете знать, какой модуль опубликовал сообщение и почему, все, что вы получите, это сообщение, его тип, предупреждение, ошибка и т. Д.

Если вы хотите изменить сообщения, вы можете сделать это в preprocess_page, где вычтобы сообщения были доступны, или вы можете сделать это раньше, изменив глобальную переменную $_SESSION, в которой хранятся сообщения.

Но, как я уже сказал, не существует хорошего способа фильтрации сообщений, поэтому выбудет очень трудно, если вы захотите удалить сообщение X из модуля Y. Если вы действительно хотите, вы можете использовать RegEx, но это быстро станет неуправляемым.

1 голос
/ 10 сентября 2010

Если вы создали сообщение об ошибке и сразу знаете, что не хотите его отображать, вы можете удалить его из массива ошибок Drupal следующим образом:

array_pop($_SESSION['messages']['error']);

Это удалит самое последнеесоздано сообщение об ошибке, но форма останется в состоянии ошибки.Это немного хакерский способ сделать это, но это избавляет вас от необходимости погружаться в кодирование ядра Drupal.

Вы также можете охотиться за конкретными записями в массиве и сбрасывать их, но это немного больше работы.

0 голосов
/ 29 октября 2010

Вы можете удалить

print $ messages

fromm page.tpl.php вашей темы, если вы не хотите, чтобы они отображались вообще.

Однако, как правило, удобнее использовать отзывы о действиях пользователей.

...