【问题标题】:Override Variable in Array - Smarty覆盖数组中的变量 - Smarty
【发布时间】:2012-06-01 10:12:08
【问题描述】:

有点奇怪,但我正在使用一个名为 CS-Cart 的电子商务平台,它使用 smarty 作为模板语言。它有一个智能调试控制台,可以让我查看当前页面正在使用哪些变量。

例如,这里是一个正在使用的数组(我已经缩短了这个例子):

 Appearance => Array (33)
  products_per_page => "10"
  admin_products_per_page => "10"
  admin_elements_per_page => "10"
  columns_in_products_list => "3"
  default_products_sorting => "price"

我希望能够为default_products_sorting => "price" 分配不同的值 我计划在文档的标题中执行此操作,因为它将包含在 IF 语句中,只有在某些条件为真时才会更改变量。

这在 smarty 中是否可行? (不使用 PHP),如果是这样,关于如何实现这一点的任何想法?我搜索了谷歌,但到目前为止还是一片空白。

非常感谢任何帮助。

【问题讨论】:

    标签: arrays smarty cs-cart


    【解决方案1】:

    你可以像这样改变变量

    {$Appearance.default_products_sorting = "NEW_VALUE"}
    

    在这一行之后,如果你使用{$Appearance.default_products_sorting},你应该得到新的值。

    我刚刚检查过,它确实有效。

    您应该在 smarty 模板的顶部更改它,以便使用此变量的任何代码都获得更新后的值。

    看起来上述方法不适用于arrays。您可以考虑使用此链接中的自定义功能http://www.smarty.net/forums/viewtopic.php?t=7201&highlight=create+array

    【讨论】:

    • 感谢您的回复,我刚刚尝试过,但没有成功,但后来我注意到它在 {$settings} 内 - 我现在不确定语法应该如何改变?编辑:我试过 {$settings.Appearance.default_products_sorting = "NEW_VALUE"} 但这似乎只是打印旧值。
    • 这种情况你可以试试$settings.Appearance.default_products_sorting
    • 它在数组的情况下不起作用,虽然适用于简单的变量,试试这个smarty.net/forums/…
    • 谢谢,我试过了,但它似乎不能很好地与 CS-Cart 配合使用,看起来这需要重新考虑。感谢您的回答。请将该链接放在您的主要答案中,我会将其标记为已接受。
    • 已添加。有一件事,你不能只找到 val 用于对值进行排序并以某种方式更改该代码,以免弄乱其他代码。
    【解决方案2】:

    {php}$this->_tpl_vars['Appearance']['default_products_sorting'] = "value";{/php}

    我没有在 WHMCS 之外对此进行过测试,但通过快速搜索,它似乎仍然适用。

    在这里找到:http://forum.whmcs.com/showthread.php?28490-Modify-single-item-of-smarty-array

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2018-04-23
      • 1970-01-01
      相关资源
      最近更新 更多