|
|
|
| Всем привет. Как в скрипте подключить шаблон Smarty не из файла, а из строки? | |
|
|
|
|
|
|
|
для: Петр
(19.02.2008 в 05:18)
| | Что значит из строки? В Смати шаблон подключается не из файла, а подключение файла шаблона. | |
|
|
|
|
|
|
|
для: sim5
(19.02.2008 в 06:00)
| | ну я имею в виду, что в php-скрипте пишем функцию библиотеки Smarty для вывода и в качестве параметра задаем имя шаблона-файла, а можно ли указать не файл, а строку (переменную $str)
я просто хочу считать содержание шаблона в переменную, сделать кое-какие изменения и вывести | |
|
|
|
|
|
|
|
для: Петр
(19.02.2008 в 08:52)
| | Я вам уже отвечал на это, в Смарти можно "перехватить" вывод шаблона вместо вывода на экран, и присвоить его переменной. Ваш вопрос звучит как создание шаблона Смарти на лету. | |
|
|
|
|
|
|
|
для: sim5
(19.02.2008 в 08:57)
| | Он хочет юзать
$template = 'Привет, {$nick}';
|
| |
|
|
|
|
|
|
|
для: bronenos
(19.02.2008 в 09:09)
| | Ну о:
$smarty->assign("var", $template);
я думаю, он знает. Бог знает чего он хочет юзать, но этот вопрос крутиться постоянно. ) | |
|
|
|
|
|
|
|
для: sim5
(19.02.2008 в 09:13)
| | Шаблон брать не из файла, а из переменной | |
|
|
|
|
|
|
|
для: bronenos
(19.02.2008 в 09:25)
| | {нечто} это не шаблон для Смарти, а переменная. | |
|
|
|
|
|
|
|
для: sim5
(19.02.2008 в 09:34)
| | Дайопэрэсэтэ!!!
ШАБЛОН, который надо обработать берется не из файла, а из ПЕРЕМЕННОЙ! | |
|
|
|
|
|
|
|
для: bronenos
(19.02.2008 в 09:38)
| | Этэпэрэтэ!!!
fetch, я уже говорил об этом автору. Но перехватывается шаблон а не нечто, у автора же выглядит так, что этот шаблон надо создать на лету или я его не понимаю. Вообще же глянуть в методы Смарти. | |
|
|
|
|
|
|
|
для: sim5
(19.02.2008 в 09:50)
| | Да, нет же! fetch помещает результат работы шаблона в переменную. А мне надо из переменной (в которой будет шаблон, типа $str = 'HTML теги...{$name}...HTML теги') и в PHP-скрипте выводить все переменные в этот шаблон $str;
Ну можно сказать что на лету.. точнее он уже есть в файле, но надо его достать модифицировать в зависимости от результата работы PHP-скрипта и вывести.. т.е. наоборот, не из шаблона получить строку, а из строки получить результат работы шаблона | |
|
|
|
|
|
|
|
для: Петр
(19.02.2008 в 12:47)
| | А что там надо такого менять | |
|
|
|
|
|
|
|
для: Петр
(19.02.2008 в 12:47)
| | Смотрите методы Смарти, есть такие что позволяют получить переменные шаблона, може вам это надо. Но, чтобы они были в шаблоне, их надо определить, а определив их модифицировать в зависимости от результата работы PHP-скрипта и вывести.., вам достаточно просто подключить шаблон. Вы можете и в неком шаблоне делать подключение части того, что требует модификации.
Но если вам надо парсить в РНР переменную (а тут не важно чем она изначально являлась), то на это есть стандартные средства РНР, при чем тут Смарти не понятно. | |
|
|
|
|
|
|
|
для: sim5
(19.02.2008 в 13:45)
| | при том, что полученную строку шаблона (текст шаблона, html-теги, smarty-переменные, циклы и условия, в общем все что обычно используется) надо отдать шаблонизатору смарти, который ее (строку) прогонит через свое нутро и выдаст резутьтат пользователю
Это все для следующего: (очень простой пример, чтобы понять смысл.. а так будут сложнее по количеству)
готовая страница разбита на модули
шапка, тело и низ, у каждого модуля есть привязанный php_файл и html-шаблон
например:
1 шапка header.php header.html (HTML-теги и все что нужно.. ЭТО ШАПКА...)
2 тело body.php body.html (%header%..ЭТО тЕЛО %footer%)
3 низ footer.php footer.html (..ЭТО НИЗ..)
|
и смысл такой, при открытии этой страницы, открывается шаблон модуля 3 (body), парситься и извлекается все включенные модули (%модуль%) потом заменяется на соответствующий шаблон.
в итоге мы имеет строку всего шаблона и в конце головного php-скрипта должно быть что-то типа
$samarty->вывод($эта_строка_шаблона)
П.С. использовать include в шаблонах не подходит, т.к. это не очень удобно и нужно чтобы проработал все php-файлы используемых модулей, а потом загрузились все шаблоны модулей (для того, чтобы была возможность напрмиер выводить переменную в шапке, которая определяется в теле или подвале) | |
|
|
|
|
|
|
|
для: Петр
(19.02.2008 в 14:14)
| | Проще указывать Смарти необходимое имя файла шаблона в зависимости от модуля. | |
|
|
|
|
|
|
|
для: sim5
(19.02.2008 в 14:35)
| | остается один выход:
сделать парсинг включаемых модулей (рекурсивный)
потом обход полученного массива и подключение php-файлов, потом повторный обход и подключение html-шаблонов
ну как-то запутанно и очень ресурсоемко :( | |
|
|
|
|
|
|
|
для: Петр
(19.02.2008 в 14:39)
| | Вывод шаблона шапки
Вывод шблона контента, имя которого определяется условием (переменная)
Вывод шаблона подвала
Так что не проще будет? Да и вообще - модуль, это уже нечто разное, а значит и свой РНР код, а значит указать в нем соотвествующий шаблон. Вы что хотите весь сайт запихать в одну страницу кода? | |
|
|
|
|
|
|
|
для: sim5
(19.02.2008 в 15:25)
| | Как оказывается сложно все объяснить..
У каждого модуля свой PHP-код и свой HTML-шаблон. Надо сделать так, чтобы была возможноть включать один модуль в другой (типа чтоб могли быть страницы без шапки или без подвала)
кароче говоря, чтоб была полная универсальность, и именно!!! главное, чтобы сначала выполнялись коды модулей, а потом выводились шаблоны... 100 раз писал уже
Ладно, никто мне не поможит :( | |
|
|
|
|
|
|
|
для: Петр
(19.02.2008 в 19:25)
| | А что мешает опредилить в индексном шаблоне по переданным переменным:
{if $var eq var}
{include file="head.tpl"}
{else}
{include file="content.tpl"}
{/if}
Тоже самое можно определить в РНР. Может я вас не совсем понимаю, но то что вы говорите, похоже на то, как если бы перед print я бы пропарсил все что у меня получилось, ради того, чтобы узнать - нужно ли в некое место включить что-то. | |
|
|
|