Скрыть сообщение "Создан новый форум XXX" в Drupal
Каждый раз, когда я создаю новый форум с помощью API, появляется сообщение:
Создан новый форум бла бла
появляется (сообщение о состоянии).
Могу ли я подавить это? может с крючком?
3 ответа
Существует модуль, который создает ловушку, которую вы можете использовать для изменения сообщений. http://drupal.org/project/messages_alter
Я думаю, что это сработает для вашего варианта использования, однако, если вам нужно что-то, чего он не предлагает, или просто хотите развернуть свой собственный вариант: быстрый взгляд на модуль даст вам идеи о том, как вы можете создать свою собственную реализацию, если вы нужно это.
Я, честно говоря, не могу вспомнить, почему мы сделали это сами, вместо того, чтобы использовать модуль, но вот несколько действительно простых примеров кода.
/**
* function to check the messages for certian things and alter or remove thme.
* @param $messages - array containing the messages.
*/
function itrader_check_messages(&$messages){
global $user;
foreach($messages as &$display){
foreach($display as $key => &$message){
// this is where you'd put any logic for messages.
if ($message == 'A validation e-mail has been sent to your e-mail address. In order to gain full access to the site, you will need to follow the instructions in that message.'){
unset($display[$key]);
}
if (stristr($message, 'processed in about')){
unset($display[$key]);
}
}
}
// we are unsetting any messages that have had all their members removed.
// also we are making sure that the messages are indexed starting from 0
foreach($messages as $key => &$display){
$display = array_values($display);
if (count($display) == 0){
unset($messages[$key]);
}
}
return $messages;
}
Функция темы:
/**
* Theme function to intercept messages and replace some with our own.
*/
function mytheme_status_messages($display = NULL) {
$output = '';
$all_messages = drupal_get_messages($display);
itrader_check_messages($all_messages);
foreach ($all_messages as $type => $messages) {
$output .= "<div class=\"messages $type\">\n";
if (count($messages) > 1) {
$output .= " <ul>\n";
foreach ($messages as $message) {
$output .= ' <li>'. $message ."</li>\n";
}
$output .= " </ul>\n";
}
else {
$output .= $messages[0];
}
$output .= "</div>\n";
}
return $output;
}
Вы можете сделать это не программно, используя модуль Disable Messages
Подавлять сообщения о запасах - боль, но это можно сделать. Я уверен, что хороший способ - это сделать 'function template_preprocess_page(&$variable)'
Установите это в своей теме и сделайте print_r для переменных $. Я почти уверен, что все сообщения, которые будут отображаться на странице, будут доступны где-то в этом массиве, и вы можете просто сбросить те, которые вы не хотите делать, вплоть до шаблона страницы.