问题标签 [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 投票
2 回答
15622 浏览

php - {if}{else} 在 smarty 中不能正常工作

我的模板上有以下 smarty 代码

当我同时打印变量$smarty.capture.diff$smarty.const.UPDATE_BLOCK_SECONDS时,它们会输出正确的值(例如 98969 和 86400),但 {if} 语句不起作用并且总是打印值“禁用更新”

0 投票
1 回答
880 浏览

smarty - 用 smarty 3 语法重写插件

我需要重写修饰符“截断”的调用方式,因为它会导致错误。 _getfilepath在版本 3 中不存在

require_once $smarty->getPluginsDir('modifier', 'truncate');

0 投票
1 回答
301 浏览

smarty - 使用 Smarty {strip} 这对性能有何影响?

我一直想知道为 Smarty 使用 {strip} 修饰符的优缺点。

服务器从模板中去除空白空间所花费的额外时间是否会超过使用较小文件减少的加载时间?

0 投票
1 回答
372 浏览

php - 自定义 smarty php 插件中的多维数组

创建自定义 smarty php 插件方法时,是否可以将多维数组作为参数之一传递?

也许像

上面是一个顺序数组,自然对关联数组的支持也一样大。

我已经搜索了几个小时的文档和论坛,但不幸的是,我能找到的所有东西都说“不”,但也已经 5 岁(或更多

谢谢。

0 投票
1 回答
1287 浏览

php - Smarty 3 在模板中分配变量

有点问题。试图在 smarty 3 模板文件中分配一个模板变量,但它似乎没有注册它。

我知道我可以在控制器中使用它:

不想用那个。我试过这个:

但由于某种原因,它似乎不起作用。

正在使用的模板正在扩展另一个模板。

我尝试将变量范围设置为全局。

另一件奇怪的事情是,即使我尝试分配一个变量,然后它只是在下面输出,它仍然返回空,就好像分配方法被一起破坏了一样。虽然没有错误。

我知道有些人可能认为在 smarty 中分配是不好的做法,但我的理由是它允许我在模板中指定我的元信息。这意味着在执行任何元调整时,它们可以在模板中完成,而不是有人进入我的控制器。

希望有人能解释一下

谢谢阅读。

0 投票
1 回答
182 浏览

php - 在调用插件之前从 smarty 插件中打印分配的值

我正在尝试围绕 smarty 开发一个广告系统。所以我想出了一个插件,当它在页面上吐出时看起来像这样:

问题在于,在该函数内部,我有一个分配了名为 AD_HEAD 的变量。

现在 AD_HEAD 应该显示在标签上方。

所以一个基本的 html 看起来像这样:

如您所见,AD_HEAD 的位置高于 load_ad。

麻烦是因为它被放置得更高,它会保持空,但是当我把它放在更低的地方然后 load_ad 它会工作。

我怎样才能让它工作,或者我需要以不同的方式开发它?

0 投票
1 回答
1463 浏览

php - smarty - 如何输出变量“{$myvar@display}”

我似乎无法找到一种方法来逃避 smarty 变量输出块中的“@”符号。

这是我的设置:

在此处分配 doco

在我的模板文件中:

输出:

任何想法如何在不更改“@”符号的情况下显示它(我无法修改它,因为它是整个应用程序中使用的约定,我无法控制它)

运行 LAMP 5.2.17、Smarty 3


PS我试过这个没有成功......

输出

0 投票
3 回答
416 浏览

php - PHP Smarty tpl,为所有页面调用相同的php代码

所以我想使用类似于 asp.net 处理母版页的 smarty,即我想创建一个 master.tpl 文件,该文件负责始终呈现大部分页面(页眉、页脚、背景等),但是我在每个页面上都有一个我想要的下拉菜单,它有一些动态数据,我不想在每个使用 master.tpl 文件的 php 脚本中调用或重现这个函数,我想要一种方法,当那个 tpl文件被使用,另外运行正确的脚本。

我希望以正确的方式做到这一点,所以不要使用 {php} 或其他任何不推荐使用的东西。

谢谢。

0 投票
1 回答
1231 浏览

php - 带有 Codeigniter 和 Ci-Smarty“不可调用”错误的 Smarty 输出过滤器

我目前正在使用带有 ci-Smarty 的 codeigniter 2。只是试图添加一个聪明的输出过滤器,但运气不佳。好像找不到功能还是什么?

我使用插件作为输出过滤器功能,并具有以下代码:

位置: /libraries/Smarty.php

位置: /third_party/Smarty/plugins/function.protect_email.php

以上似乎引发了以下聪明错误:

致命错误:在 /home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php:717 中包含消息“outputfilter“protect_email”不可调用的未捕获异常“SmartyException”:717 堆栈跟踪:#0 /home/something/public_html /application/libraries/Smarty.php(46): Smarty_Internal_TemplateBase->loadFilter('output', 'protect_email') #1 /home/something/public_html/system/core/Loader.php(1095): CI_Smarty->__construct(数组)#2 /home/something/public_html/system/core/Loader.php(975): CI_Loader->_ci_init_class('Smarty', '', NULL, NULL) #3 /home/something/public_html/system/core /Loader.php(216): CI_Loader->_ci_load_class('smarty', NULL, NULL) #4 /home/something/public_html/application/libraries/MY_Parser.php(29):CI_Loader->library('smarty') #5 /home/something/public_html/system/core/Loader.php(1099): MY_Parser->__construct() #6 /home/something/public_html/system/core/Loader. php(938): CI_Loader->_ci_init_class('Parser', 'MY_', NULL, NULL) #7 /home/something/public_html/system/core/Loader.php(216): CI_Loa in /home/something/public_html /application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php 在第 717 行/home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php 中的 CI_Loa 位于第 717 行/home/something/public_html/application/third_party/Smarty/sysplugins/smarty_internal_templatebase.php 中的 CI_Loa 位于第 717 行

抱歉拖了这么久!只是认为看到整个错误可能会有所帮助。

非常感谢阅读,希望有人能提供帮助。

--> EDIT 还尝试使用以下命令显式设置插件目录位置:

回显出正确的位置但仍然遇到同样的问题:(

0 投票
0 回答
2429 浏览

php - 使用子模板和插件进行 Smarty 渲染

我很难让我的通知框出现在我的模板中,由 Smarty 提供支持。

我有我的 main.tpl 模板:

在 notification.tpl 中:

在我的 index.php 页面中,它支持 smarty,包括类等,它的基础有:

在上面的 $content 中,包括以下内容:

我已经制作了一个插件和一个类来处理我的小部件插件 - 以上工作完美(包含表单并且可以登录)。但是,如果输入了错误的用户名/密码,我会尝试向主模板的通知区域添加一些详细信息,但由于某种原因,我似乎无法在我的小部件插件中执行此操作。

我的 function.widget.php 文件:

我的小部件类,widget.class.php:

如果我在呈现通知的 index.php 中添加通知,我的通知类就可以工作。但是,由于某种原因,如果我将它们添加到小部件的插件 (function.widget.php) 中,这些通知不会出现。是否有一些我应该分配通知详细信息的预渲染位置,因为似乎所有子项目都在很晚才处理,但由于它已经被声明,所以它不会添加它。

所以我的问题是,我应该在哪里正确分配通知部分,因为我总是可以在一个页面上有 2 个小部件,所以不想显示每个错误两次。