Изменить сообщения в Drupal 7 - PullRequest
3 голосов
/ 09 февраля 2011

В drupal есть пара сообщений. При появлении предупреждения php выдается сообщение об ошибке, но модуль также может вызывать сообщения с помощью drupal_set_message (). Вопрос: есть ли способ изменить эти сообщения? Например, заменить каждое «a» на «b» в каждом сообщении.

Спасибо!

Ответы [ 3 ]

8 голосов
/ 09 февраля 2011

Пока сообщения не изменяются на множестве, вы можете изменить их на дисплее с помощью 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 на что-то другое, если это не английский.

1 голос
/ 27 октября 2016

Переопределение строк - лучшее решение, НО

  • , если вы пытаетесь переопределить в сообщении переменную ИЛИ
  • , которую вы хотитечтобы заменить строку во всех сообщениях

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

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'))
        );
      }
    }
  }
}

Кредит Парвинд Шарма , где я нашел часть этого решения.

0 голосов
/ 03 января 2012

Модуль 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, чтобы изменение вступило в силу

...