改变Drupal 7中的消息

时间:2011-02-09 08:40:17

标签: php drupal drupal-7

drupal中有几条消息。当出现php警告时,会引发错误消息,但模块也可以使用drupal_set_message()引发消息。问题是:有没有办法改变这些消息?例如,在每条消息中用'b'替换每个'a'。

谢谢!

3 个答案:

答案 0 :(得分:8)

虽然设置中没有消息更改,但您可以通过hook_preprocess_status_messages更改显示消息,请参阅预处理http://api.drupal.org/api/drupal/includes--theme.inc/function/theme/7http://api.drupal.org/api/drupal/includes--theme.inc/function/theme_status_messages/7

修改:您也可以尝试使用字符串替换检查http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/t/7,简而言之$conf['locale_custom_strings_en']['some message'] = 'some messbge';为英语,如果不是英语则更改_en

答案 1 :(得分:1)

String overrides是最好的解决方案,但是

  • 如果您尝试在邮件中覆盖的内容是变量OR
  • 您想要替换所有消息中的字符串

然后字符串覆盖无法帮助您,这是一个解决方案。

hook_preprocess_status_messages()传入$ variables但消息不在$ variables中,在$ _SESSION [' messages']中更改。

/**
 * Implements hook_preprocess_status_messages()
 */
function MYMODULE_preprocess_status_messages(&$variables) {
  if (isset($_SESSION['messages']['warning'])) {
    foreach ($_SESSION['messages']['warning'] as $key => $msg) {
      if (strpos($msg, 'some text in the message') !== FALSE) {
        $_SESSION['messages']['warning'][$key] = t(
          'Your new message with a <a href="@link">link</a>.',
          array('@link' => url('admin/something'))
        );
      }
    }
  }
}

归功于Parvind Sharma我找到了解决方案的一部分。

答案 2 :(得分:0)

String Overrides模块不允许您在字符串中替换A和B,但它允许您替换整个字符串(drupal 6和7) http://drupal.org/project/stringoverrides

但是,如果您更喜欢使用自己的代码段,我就是这样做的。

mymodule.install中的

function mymodule_update_7001() {
$custom_strings = array(
    ''=>array(//context is blank
        'Old string' => '', //blanking the string hides it
        'Another old string.' => 'New String'
    )
);

variable_set("locale_custom_strings_en",$custom_strings);   //note, this is only for english language
}

然后只需运行update.php即可进行更改