将 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 代码?

提示:我不想编辑我的模板文件。我只想将数据库内容解析到我网站的内容部分。


我尝试了什么:

你不能在 Smarty 中这样做。另外 运行 php 代码存储在数据库中听起来是个糟糕的主意。但是如果出于某种原因你不得不继续这个废话(并且考虑到你不能使用 eval),你可以试试这个:

  1. 从数据库中读取 php 代码。
  2. 保存到临时 php 文件
  3. 使用 ob_start()
  4. 打开输出缓冲
  5. 包含您创建的文件
  6. 使用 ob_get_clean()
  7. 将输出分配给一个变量
  8. 将变量分配给模板

但如果我是你,我会尝试用另一种方式来做这个项目。