2010-09-10 2 views
0

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

ответ

1

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

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

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

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

+0

Что было бы для создания сообщения и его удаления еще раз? Если у вас есть собственный модуль, просто не создавайте сообщение в первую очередь. Это не поможет для удаления определенных сообщений. – googletorp

+0

Я видел эту технику, например, в форме, где вы проверяете два поля вместе и хотите, чтобы они оба отображались как ошибки, но только одно сообщение должно отображаться. Кроме того, возможно, вы можете сканировать массив и удалить дублированные сообщения. Такого рода вещи. – Spudley

2

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

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

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

3

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

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

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

+0

Завершена ваша статья? ;) –

+0

(3 года спустя) Я даже не помню, чтобы написал это http://goo.gl/ESjKw6 – corbacho

0

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

печать $ сообщений

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

Однако, как правило, для удобства пользователей лучше обращать внимание на действия пользователей.

2

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

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

Некоторые из его особенностей:

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