Присвойте 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), вы можете попробовать это:
- Прочитайте код php из базы данных.
- Сохранить во временный файл php
- Включите буферизацию вывода с помощью ob_start()
- включите файл, который вы создали
- назначьте вывод переменной с помощью ob_get_clean()
- назначить переменную для шаблона
Но на вашем месте я бы попытался сделать проект по-другому.