Как мне динамически изменять сообщения Ubercart по умолчанию из моего модуля - PullRequest
1 голос
/ 09 апреля 2010

Есть некоторые продукты, для которых я хотел бы получить специальное сообщение о завершении оформления заказа, которое будет отличаться от значения по умолчанию.

Я знаю, что мог бы сделать это, изменив страницу перенаправления по умолчанию на что-то другое. [И я не уверен, что это вызовет еще одну проблему]

Однако я хотел бы знать, существует ли стандартный / лучший способ решения этой проблемы.

Спасибо!,

D

Ответы [ 2 ]

1 голос
/ 12 апреля 2010

Рассмотрим модуль Переопределения строк . Вот цитата об этом (со страницы проекта модуля):

Обеспечивает быстрый и простой способ замены любого текста на сайте.

Особенности:

  • Легко заменить все, что прошло через t ()
  • Поддержка локалей, позволяющая переопределять строки на любом языке
  • Возможность импорта / экспорта * .po файлов для облегчения миграции из модуля Locale
  • Обратите внимание, что это не замена Locale, поскольку наличие тысяч переопределений может причинить больше боли, чем пользы. Используйте это, только если вам нужно несколько простых изменений текста.
0 голосов
/ 10 апреля 2010

Я предполагаю, что единственный другой возможный способ сделать то, о чем я думаю, это переопределить функцию темы , которую ubercart использует для отображения сообщения.И это, вероятно, кажется наиболее разумным.

В этом случае я бы переопределил theme_uc_cart_complete_sale

Я мог бы установить

$_SESSION['is_special_product'] == TRUE;

и затем установите $ message для моего $ special_message, если оно установлено.

if ($_SESSION['special_product']) {
      $special_message = t('This is my special message');
      $message = variable_get('special_product_message', $special_message;
    }

Наконец, чтобы переопределить из моего модуля, мне нужно будет подключиться к ловушке предварительной обработки:

function $modulename_prepocess_$hook(&$message) {
      if ($_SESSION['special_product']) {
      $special_message = t('This is my special message');
      $message = variable_get('special_product_message', $special_message;
    }
}

Важно отметить, что недостаточно иметь эту функцию в вашем модуле .Функции предварительной обработки вызываются только тогда, когда вызывается файл шаблона, который переопределяет функцию темы.

Более подробную информацию можно найти по адресу http://drupal.org/node/223430

...