将php代码分配给smarty模板引擎

时间:2016-05-30 12:04:36

标签: php smarty assign

我为我的公司创建了一个新网站,我想使用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>

有没有一种方法可以在解析之前巧妙地处理PHP代码?

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


我尝试了什么:

  • 将数据库内容保存到字符串中,用smarty-PHP-tags替换PHP标签,然后将其分配给模板
  • SmartyBC级

1 个答案:

答案 0 :(得分:1)

你不能在Smarty那样做。还运行存储在数据库中的PHP代码听起来像一个可怕的想法。但如果由于某种原因你不得不继续这个废话(考虑到你不能使用eval),你可以试试这个:

  1. 从数据库中读取php代码。
  2. 保存到临时php文件
  3. 使用ob_start()
  4. 打开输出缓冲
  5. 包含您创建的文件
  6. 使用ob_get_clean()
  7. 将输出分配给变量
  8. 将变量分配给模板
  9. 但如果我是你,我会尝试以另一种方式完成这个项目。