Скрыть сообщение "Создан новый форум XXX" в Drupal - PullRequest
1 голос
/ 19 января 2011

Каждый раз, когда я создаю новый форум с помощью API, появляется сообщение:

Создан новый форум, бла-бла

(сообщение о состоянии).

Могу ли я подавить это?может с крючком?

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Это можно сделать не программно, используя модуль Disable Messages

0 голосов
/ 20 января 2011

Существует модуль, который создает ловушку, которую вы можете использовать для изменения сообщений. 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;
}                
0 голосов
/ 20 января 2011

Боль подавлять сообщения о запасах - это боль, но это можно сделать. Я почти уверен, что хороший способ - сделать 'function template_preprocess_page (& $ variable)'

Установите это в своей теме и сделайте print_r для переменных $. Я почти уверен, что все сообщения, которые будут отображаться на странице, будут доступны где-то в этом массиве, и вы можете просто сбросить те, которые не хотите делать, вплоть до шаблона страницы.

...