如何从我的模块动态更改ubercart的默认消息

时间:2010-04-09 18:59:00

标签: drupal ubercart

有些产品我希望有一个特殊的结帐完成消息,与默认值不同。

我知道我可以通过将默认重定向页面更改为其他内容来实现此目的。 [我不确定这是否会引入另一个问题]

但是,我想知道是否有标准/更好的方法来解决这个问题。

谢谢!,

d

2 个答案:

答案 0 :(得分:1)

考虑String Overrides模块。这是关于它的引用(来自模块的项目页面):

  

提供一种快速简便的方法来替换网站上的任何文字。

     

特点:

     
      
  • 轻松替换通过t()
  • 的任何内容   
  • 区域设置支持,允许您覆盖任何语言的字符串
  •   
  • 能够导入/导出* .po文件,以便从Locale模块轻松迁移
  •   
  • 请注意,这不是Locale的替代品,因为有数千个覆盖可能会导致更多的痛苦然后受益。仅在需要进行一些简单的文本更改时才使用此选项。
  •   

答案 1 :(得分:0)

我想我正在考虑的另一种可能的方法是覆盖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

找到更多详情