drupal中有幾條消息。當出現php警告時,會引發錯誤消息,但模塊也可以使用drupal_set_message()引發消息。問題是:有沒有辦法改變這些消息?例如在每條消息中用'b'替換每個'a'。修改Drupal 7中的消息
謝謝!
drupal中有幾條消息。當出現php警告時,會引發錯誤消息,但模塊也可以使用drupal_set_message()引發消息。問題是:有沒有辦法改變這些消息?例如在每條消息中用'b'替換每個'a'。修改Drupal 7中的消息
謝謝!
雖然對一套沒有消息改變,你可以通過顯示屏更改hook_preprocess_status_messages
他們,看到http://api.drupal.org/api/drupal/includes--theme.inc/function/theme/7的預處理和http://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
爲別的東西,如果它不是英文。
的字符串覆蓋模塊不會讓你爲B的字符串替換A,但它可以讓你更換整個字符串(Drupal的6和7) http://drupal.org/project/stringoverrides
不過,如果您更願意使用自己的代碼片段,這是我已經做到了。
在mymodule.installfunction 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的變化
String overrides踢是最好的解決辦法,但
然後字符串覆蓋不能幫助你,這裏是一個解決方案。
hook_preprocess_status_messages()傳遞$變量,但消息不在$變量中,請在$ _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,我發現這個解決方案的一部分。
這並沒有解決我的問題。使用這些鉤子只能提供幾乎空的數組。我的問題是什麼? – luksak 2012-11-05 22:58:23