在 Smarty 中使用 {php} 标签会输出一个空白页


using the {php} tags in smarty outputs a blank page

我没有 Smarty 的经验,我试图从不是由 made 制作的软件修改.tpl文件,我只是在 .tpl 文件中添加了 {php} {/php} 标签,里面根本没有代码,它的输出似乎是空白的。首先我有一些代码,但它输出了一个空白页,所以我开始删除行,现在 {php} {/php} 标签内根本没有行,但它确实有这种行为。我在这里做错了什么?

你使用的是哪个版本的Smarty?PHP 标签在不久前被弃用,从 3.1 开始。只能与向后兼容性包装器一起使用。

http://www.smarty.net/docs/en/language.function.php.tpl

如果可能的话,最好将你的php保存在一个单独的类或控制器中(这样其他模板也可以访问它),但是如果你真的需要把它包含在页面上,只需包含smartybc类,就像它在这里说的那样:http://www.smarty.net/docs/en/bc.tpl

<?php
// instead of
require_once('path/to/smarty/libs/Smarty.class.php');
$smarty = new Smarty();
// use 
require_once('path/to/smarty/libs/SmartyBC.class.php');
$smarty = new SmartyBC();
?>

另外,如果你想看到PHP错误(当出现问题时你只是得到一个空白页,使调试变得困难),你可以通过转到config/config.inc来激活调试模式.php找到以下行并将第一行的"off"更改为"on",并将第二个设置为true

/* Debug only */
@ini_set('display_errors', 'on');
define('_PS_DEBUG_SQL_', true);

这应该为您显示PHP和SQL错误。

你不应该使用 {php} 标签,因为它们在 Smarty 文档中被描述为已弃用。如果您希望运行一些代码,请尝试按照此处所述为 smarty 准备插件。