2016-05-30 6 views
0

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

<?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-код перед его разбором?

Подсказка: я не хочу редактировать файл шаблона. Я просто хочу проанализировать содержимое базы данных в своем разделе контента на веб-сайте.


Что я пробовал:

  • сохранены базы данных контента в строку и заменить PHP-теги с Smarty-PHP-теги, а затем назначить его в шаблон
  • SmartyBC-класса

ответ

1

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

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

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

+0

Спасибо за ваш ответ. Я не думал о том, чтобы переработать весь сайт, и я не знаю, почему страницы хранятся в базе данных. Я думаю, что сначала создаю новый сайт без этой базы данных, а затем я редактирую базу данных/таблицы для своих нужд. – Seelixh

+0

Теперь я знаю, почему мы сохранили код в базе данных. Это как-то связано с нашей системой обновлений. В нашей интрасети мы можем обновить веб-сайт и загрузить изменения непосредственно в базу данных общедоступных веб-сайтов. Затем публичный веб-сайт загружает содержимое страницы из базы данных. – Seelixh

Смежные вопросы