Присвойте 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-класс

0

Решение

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

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

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

1

Другие решения

Других решений пока нет …