代码之家  ›  专栏  ›  技术社区  ›  dkinzer

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

  •  1
  • dkinzer  · 技术社区  · 15 年前

    对于某些产品,我希望有一个与默认值不同的特殊签出完成消息。

    我知道我可以通过 更改默认重定向页 去别的地方。 [我不确定这是否会带来另一个问题]

    不过,我想知道 标准/更好的方法 解决这个问题。

    谢谢!,

    D

    2 回复  |  直到 10 年前
        1
  •  1
  •   Pierre.Vriens Krzysztof J    10 年前

    考虑一下 String Overrides 模块。以下是有关它的引述(来自模块的项目页面):

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

    特征:

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

    我想唯一可能的方法就是 重写主题函数 Ubercart用于显示消息。这似乎是最有意义的。

    在这种情况下,我会重写 主题购物车完成销售

    我可以设定一个

    $_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

    推荐文章