问题标签 [smarty3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2314 浏览

php - 例外和聪明

我有块try-catch,我想将模板的错误分配给$error。我试过了:

也试过:

但是当没有错误时,smarty 需要这个变量并且所有的崩溃。有什么方法可以不使用 if 来处理它?或者我可能从一开始就做错了?

0 投票
2 回答
372 浏览

php - 如何在 smarty 中获取 css、js、图像文件的自动版本控制?

如何在smarty中获得 css、js、图像文件的自动版本控制?

像这样

对此

0 投票
2 回答
2028 浏览

smarty - 如何 fetch() Smarty 模板的子部分

背景Smarty 是一个模板引擎,它将表示层与 Web 应用程序的逻辑层分开。它非常适合用于开发 Web 应用程序的模型-视图-控制方法。视图可以用 Smarty 模板表示,这些模板只包含 HTML 和 Smarty 标签。控件可以由 PHP 文件实现,这些文件通过 PHP 代码根据其中包含的逻辑提供适当的视图。通过display()命令显示模板来实例化视图。或者,可以将模板作为变量读入,而无需通过fetch()命令显示。模板的文件名是这两个命令的参数。

问题fetch()命令可以读取整个模板。为了读取模板的部分/子部分,这些部分中的每一个通常需要存储在一个单独的文件中,其名称可以作为命令的参数。这会创建不必要的文件。

问题是否可以通过以某种方式标记模板的部分来仅获取 Smarty 模板的一部分?

案例示例下面我展示了一个带有 Smarty 和 HTML 标签的示例模板文件,以及带有 PHP 代码的相应控制器文件。

模板文件 (index.tpl)

控制器文件 (index.php)

在上面的示例中,$template变量将包含模板页面的完整输出。下面是示例中其内容的转储。

但是,假设我希望分别从每个 DIV 容器中读取代码,并将它们存储到单独的变量中,我该如何实现呢?例如,假设我有一个名为fetch_sub(). 这是我对使用它的期望。

然后$div1, etc 将仅包含相关的子部分,而不是整个模板。

其他信息不是Smarty 的初学者,并且对基本概念以及 Smarty 的一些高级概念有相当好的掌握。以下是我迄今为止在概念化问题和寻求解决方案方面的尝试。我最初的粗略想法是使用 将模板划分为多个部分{capture},然后以某种方式引用这些部分中的每一个。我在下面给出了这个想法的一个概要示例。

0 投票
2 回答
3402 浏览

php - 将 Smarty 从 Smarty v2 升级到 v3

我正在将基于 PHP 的站点从 Smarty2 升级到 Smarty3。require_once('Smarty.class.php'通过替换以下内容,我已经设法使两个版本的大部分内容都正常工作:

然后我在 /usr/local/lib/php/Smarty 有一个符号链接,它指向版本 2 或版本 3。为了在两者之间进行交换,我只需要更改符号链接。通过使用兼容层类(SmartyBC),几乎所有东西都可以在两个版本中使用。我想保持与这两个版本的兼容性,直到所有内容都经过全面测试,并尽可能少地对旧模板进行更改。考虑到这一点,这是我要升级的一段代码:

这在 V3 中不起作用,但这将:

这些常量(其中不少)在所有地方都使用,所以理想情况下,我想找到一种方法让第一种方法在版本 3 中工作。如果这不可能,那么最干净的支持方法是什么两个版本都暂时?

0 投票
3 回答
5305 浏览

php - 如何从 Smarty 中访问 Mysql 结果集?

我的站点显示一组 div,每个 div 代表一个包含五种不同类型内容的集合。每个 div 显示该集合中每种内容的项目数量。

我目前从数据库中获取每种类型的编号,如下所示:

ETC

问题是我们正在为每个 div 执行五个数据库查询,我们想尝试将它们合并为一个。使用 php,我们只需要做

然后使用带有“mysql_fetch_array”的“while”循环将类型数量分配给变量。

是否可以在 Smarty 中做类似的事情?Smarty 是否有 mysql_fetch_array 替代方法来访问结果集?

提前致谢!

编辑:有人建议我应该从 php 中执行此操作,但我不清楚它是如何工作的。在我的 php 文件中,我有以下内容:

然后在 stack.tpl 我有以下内容:

我认为我是从 Smarty 循环中一次构建一个 div,我别无选择,只能在循环中一次获取每个 div 的 mysql 数据。有没有办法让我获取 php 文件中每个 div 的数据,然后在循环期间分配它并在 Smarty 中使用它?

0 投票
2 回答
3576 浏览

php - 从字符串中取出第一个单词

如何从字符串中删除 Smarty 中的第一个单词,如下所示:

$variable = "Word Quick brown fox";

然后在输出上使它看起来像这样:

$variable = "Quick brown fox";

有没有办法在没有修饰符的情况下做到这一点?我知道你可以制作自定义修饰符,然后使用$variable|customModifier并得到你想要的,但我想也许已经有内置的解决方案了?

0 投票
3 回答
6345 浏览

javascript - 将 Google AdWords 转换跟踪 (javascript) 代码添加到 PrestaShop / Smarty 页面

我正在运行一个 PrestaShop 网站,并希望将其与 Google AdWords 和转化跟踪功能集成。PrestaShop 代码在 Smarty 3 中。

现在我发现我可以将 Google 的 JS 代码放在一个 tpl 文件的末尾:order-confirmation.tpl。这是谷歌代码:

问题是向 JS 变量google_conversion_value提供总订单值的内容。

我正在使用 Smarty 3,并且我尝试在 {literal} 标签之间包含整个 JS 块,或者不使用空格包围大括号,没有空格,任何东西似乎都可以工作。

同样的转换值也在该部分中,它是指向 googleadservices 的链接中的一个参数,它当前设置为 0,但我希望 $total 值也可以去那里。

0 投票
3 回答
18860 浏览

php - 使用 smarty 从字符串中去除空格

我是新来的聪明人。

我想知道如何从 Smarty 中的给定字符串中删除所有空白字符?

我有一个像“这是我的字符串”这样的字符串。输出应该是“thisismystring”。

我怎样才能做到这一点?

0 投票
1 回答
666 浏览

templates - Smarty 子模板块在更新时中断

我正在尝试使用 Smarty for php 创建一个模板。我希望模板可重用,因此我继承它并使用块替换值。这很好用,除非我需要在子模板中访问这些块值。我使用 smarty 的 {include} 函数调用这些子模板。

例子:

模板父(template.tpl):

子模板 (sub_template.tpl)

模板-子 (template_child.tpl)

当我查看该站点时,输出是:

在做了一些研究之后,我确实在 smarty 的网站上看到了关于将 {include} 函数包含在虚拟 {block} 标记中的注释,但在使其工作方面取得了不同程度的成功。

注意:如果你有一个包含在 {include} 中的子模板并且它包含 {block} 区域,那么它只有在从周围的 {block} 中调用 {include} 本身时才有效。在最终的父模板中,您可能需要一个虚拟 {block}。(http://www.smarty.net/docs/en/advanced.features.template.inheritance.tpl)

因此,我尝试过:

在我对子模板进行任何更改之前,这似乎有效。一旦对子模板进行更改,它就会再次停止响应子模板中设置的块值。

我是否误解了通知所指的关于将 {include} 放置在虚拟块标签中的内容,或者这是 smarty 的错误?我目前没有使用缓存,但我的另一个想法是这可能是一个子模板缓存问题。

任何见解将不胜感激,谢谢!

0 投票
2 回答
8404 浏览

php - 如何在 Smarty 中关闭 html 转义

我正在使用html_checkboxes生成选择菜单。问题是在复选框名称中我有一些 html 代码并且 Smarty 对其进行了转义。

我有:

我得到:

我需要那个状态只是蓝色的。