将 php 代码分配给 smarty 模板引擎
Assign php code to smarty template engine
我为我的公司创建了一个新网站,我想为其使用 smarty (v3.1.29)。现在的问题是我们存储所有页面的代码在我们的数据库(首页,产品,下载,...)。有些页面包含 PHP 内联函数,例如:
<?php include("functions.php"); ?>
<p> Hello <?php echo printWorldInColor(); ?> </p>
在我的模板 (.tpl) 文件中,我有一个 div 部分用于从我们的数据库加载内容:
<html>
<body>
<div id="content">
{$content}
</div>
</body>
</html>
所以我的代码之后看起来像这样:
<html>
<body>
<div id="content">
<?php include("functions.php"); ?>
<p> Hello <?php echo printWorldInColor(); ?> </p>
</div>
</body>
</html>
有没有办法让 smarty 在解析之前处理 PHP 代码?
提示:我不想编辑我的模板文件。我只想将数据库内容解析到我网站的内容部分。
我尝试了什么:
- 将数据库内容保存到一个字符串中,并将 PHP-tags 替换为 smarty-PHP-tags,然后将其分配给模板
- SmartyBC-Class
你不能在 Smarty 中这样做。另外 运行 php 代码存储在数据库中听起来是个糟糕的主意。但是如果出于某种原因你不得不继续这个废话(并且考虑到你不能使用 eval),你可以试试这个:
- 从数据库中读取 php 代码。
- 保存到临时 php 文件
- 使用 ob_start()
打开输出缓冲
- 包含您创建的文件
- 使用 ob_get_clean()
将输出分配给一个变量
- 将变量分配给模板
但如果我是你,我会尝试用另一种方式来做这个项目。
我为我的公司创建了一个新网站,我想为其使用 smarty (v3.1.29)。现在的问题是我们存储所有页面的代码在我们的数据库(首页,产品,下载,...)。有些页面包含 PHP 内联函数,例如:
<?php include("functions.php"); ?>
<p> Hello <?php echo printWorldInColor(); ?> </p>
在我的模板 (.tpl) 文件中,我有一个 div 部分用于从我们的数据库加载内容:
<html>
<body>
<div id="content">
{$content}
</div>
</body>
</html>
所以我的代码之后看起来像这样:
<html>
<body>
<div id="content">
<?php include("functions.php"); ?>
<p> Hello <?php echo printWorldInColor(); ?> </p>
</div>
</body>
</html>
有没有办法让 smarty 在解析之前处理 PHP 代码?
提示:我不想编辑我的模板文件。我只想将数据库内容解析到我网站的内容部分。
我尝试了什么:
- 将数据库内容保存到一个字符串中,并将 PHP-tags 替换为 smarty-PHP-tags,然后将其分配给模板
- SmartyBC-Class
你不能在 Smarty 中这样做。另外 运行 php 代码存储在数据库中听起来是个糟糕的主意。但是如果出于某种原因你不得不继续这个废话(并且考虑到你不能使用 eval),你可以试试这个:
- 从数据库中读取 php 代码。
- 保存到临时 php 文件
- 使用 ob_start() 打开输出缓冲
- 包含您创建的文件
- 使用 ob_get_clean() 将输出分配给一个变量
- 将变量分配给模板
但如果我是你,我会尝试用另一种方式来做这个项目。