Есть сайт построенный на шаблонизаторе XTemplate ,на сайте есть несколько глобальных переменных которые должны вставляться в шаблон , например: main.tpl HTML: <!-- BEGIN: main --> {TEXT} <!-- END: main --> index.php PHP: <? include_once("./XTemplate.php"); $main = new XTemplate("./main.tpl"); $text="1,2,3,4,5,6,7,{EIGHT},9,10" $main->assign("TEXT",$text); $main->assign("EIGHT","8"); $main->parse("main"); $main->out("main"); ?> В итоге скрипт выдаёт 1,2,3,4,5,6,7,,9,10 , соответственно в переменную $text данные будут попадать из базы.
lexa Я понимаю что всё логично , словами объяснить что сделать надо было тяжело , поэтому и выложил заведомо неправильный пример, что бы мне кто-нибудь подсказал как таким образом вывести 1,2,3,4,5,6,7,8,9,10
GvOzD вероятно, движок темплейтов не поддерживает поиск новых переменных, добавленных через assign. передавай сразу из php полностью сформированную строку
GvOzD Если бы то, что ты хочешь, поддерживалось, любой хакер Вася мог бы спровоцировать вывод системных переменных на странице, в гостевой книге например.
Есть такая бесплатная CMS как xoops там есть глобальные переменные например {USER}, если при написании новости вставить её в текс новости то при отображении переменная {USER} замениться логином читающего её пользователя.Только xoops построен на smarty , неужели в XTemplate это нет???? Можно перед конечным выводом шаблона $main->out("main"); заменить str_replace все глобальные переменные, передав их в массиве????
PHP: <? include_once("./XTemplate.php"); $text = new XTemplate("./text.tpl"); // "1,2,3,4,5,6,7,{EIGHT},9,10" $text->assign("EIGHT","8"); $text->parse("main"); $main = new XTemplate("./main.tpl"); $main->assign("TEXT", $text->out("main")); $main->parse("main"); $main->out("main"); ?>
Можешь расширить класс XTemplate научив его создавать шаблон не из файла, а из строки. PHP: $text = new myXTemplate("1,2,3,4,5,6,7,{EIGHT},9,10");