Присвойте php-код движку шаблонов smarty

Я делаю новый сайт для своей компании и хочу использовать для этого smarty (v3.1.29). Теперь проблема в том, что мы храним код для всех страниц в нашей базе данных (дома, продукты, загрузки,...). Некоторые страницы содержат встроенные функции PHP, такие как:

<?php include("functions.php"); ?>    

<p> Hello <?php echo printWorldInColor(); ?> </p>

В моем файле шаблона (.tpl) у меня есть раздел для загрузки содержимого из нашей базы данных:

<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-теги на smarty-PHP-теги, затем назначил его шаблону
  • SmartyBC-класс

1 ответ

Решение

Вы не можете сделать это в Smarty. Также запуск php-кода, хранящегося в базе данных, звучит как ужасная идея. Но если по какой-то причине вам придется продолжать эту ерунду (и учитывая, что вы не можете использовать eval), вы можете попробовать это:

  1. Прочитайте код php из базы данных.
  2. Сохранить во временный файл php
  3. Включите буферизацию вывода с помощью ob_start()
  4. включите файл, который вы создали
  5. назначьте вывод переменной с помощью ob_get_clean()
  6. назначить переменную для шаблона

Но на вашем месте я бы попытался сделать проект по-другому.

Другие вопросы по тегам