Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Шаблон Smarty из строки
 
 автор: Петр   (19.02.2008 в 05:18)   письмо автору
 
 

Всем привет. Как в скрипте подключить шаблон Smarty не из файла, а из строки?

   
 
 автор: sim5   (19.02.2008 в 06:00)   письмо автору
 
   для: Петр   (19.02.2008 в 05:18)
 

Что значит из строки? В Смати шаблон подключается не из файла, а подключение файла шаблона.

   
 
 автор: Петр   (19.02.2008 в 08:52)   письмо автору
 
   для: sim5   (19.02.2008 в 06:00)
 

ну я имею в виду, что в php-скрипте пишем функцию библиотеки Smarty для вывода и в качестве параметра задаем имя шаблона-файла, а можно ли указать не файл, а строку (переменную $str)
я просто хочу считать содержание шаблона в переменную, сделать кое-какие изменения и вывести

   
 
 автор: sim5   (19.02.2008 в 08:57)   письмо автору
 
   для: Петр   (19.02.2008 в 08:52)
 

Я вам уже отвечал на это, в Смарти можно "перехватить" вывод шаблона вместо вывода на экран, и присвоить его переменной. Ваш вопрос звучит как создание шаблона Смарти на лету.

   
 
 автор: bronenos   (19.02.2008 в 09:09)   письмо автору
 
   для: sim5   (19.02.2008 в 08:57)
 

Он хочет юзать
$template = 'Привет, {$nick}';

   
 
 автор: sim5   (19.02.2008 в 09:13)   письмо автору
 
   для: bronenos   (19.02.2008 в 09:09)
 

Ну о:
$smarty->assign("var", $template);
я думаю, он знает. Бог знает чего он хочет юзать, но этот вопрос крутиться постоянно. )

   
 
 автор: bronenos   (19.02.2008 в 09:25)   письмо автору
 
   для: sim5   (19.02.2008 в 09:13)
 

Шаблон брать не из файла, а из переменной

   
 
 автор: sim5   (19.02.2008 в 09:34)   письмо автору
 
   для: bronenos   (19.02.2008 в 09:25)
 

{нечто} это не шаблон для Смарти, а переменная.

   
 
 автор: bronenos   (19.02.2008 в 09:38)   письмо автору
 
   для: sim5   (19.02.2008 в 09:34)
 

Дайопэрэсэтэ!!!
ШАБЛОН, который надо обработать берется не из файла, а из ПЕРЕМЕННОЙ!

   
 
 автор: sim5   (19.02.2008 в 09:50)   письмо автору
 
   для: bronenos   (19.02.2008 в 09:38)
 

Этэпэрэтэ!!!
fetch, я уже говорил об этом автору. Но перехватывается шаблон а не нечто, у автора же выглядит так, что этот шаблон надо создать на лету или я его не понимаю. Вообще же глянуть в методы Смарти.

   
 
 автор: Петр   (19.02.2008 в 12:47)   письмо автору
 
   для: sim5   (19.02.2008 в 09:50)
 

Да, нет же! fetch помещает результат работы шаблона в переменную. А мне надо из переменной (в которой будет шаблон, типа $str = 'HTML теги...{$name}...HTML теги') и в PHP-скрипте выводить все переменные в этот шаблон $str;

Ну можно сказать что на лету.. точнее он уже есть в файле, но надо его достать модифицировать в зависимости от результата работы PHP-скрипта и вывести.. т.е. наоборот, не из шаблона получить строку, а из строки получить результат работы шаблона

   
 
 автор: bronenos   (19.02.2008 в 13:09)   письмо автору
 
   для: Петр   (19.02.2008 в 12:47)
 

А что там надо такого менять

   
 
 автор: sim5   (19.02.2008 в 13:45)   письмо автору
 
   для: Петр   (19.02.2008 в 12:47)
 

Смотрите методы Смарти, есть такие что позволяют получить переменные шаблона, може вам это надо. Но, чтобы они были в шаблоне, их надо определить, а определив их модифицировать в зависимости от результата работы PHP-скрипта и вывести.., вам достаточно просто подключить шаблон. Вы можете и в неком шаблоне делать подключение части того, что требует модификации.

Но если вам надо парсить в РНР переменную (а тут не важно чем она изначально являлась), то на это есть стандартные средства РНР, при чем тут Смарти не понятно.

   
 
 автор: Петр   (19.02.2008 в 14:14)   письмо автору
 
   для: 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-файлы используемых модулей, а потом загрузились все шаблоны модулей (для того, чтобы была возможность напрмиер выводить переменную в шапке, которая определяется в теле или подвале)

   
 
 автор: sim5   (19.02.2008 в 14:35)   письмо автору
 
   для: Петр   (19.02.2008 в 14:14)
 

Проще указывать Смарти необходимое имя файла шаблона в зависимости от модуля.

   
 
 автор: Петр   (19.02.2008 в 14:39)   письмо автору
 
   для: sim5   (19.02.2008 в 14:35)
 

остается один выход:
сделать парсинг включаемых модулей (рекурсивный)
потом обход полученного массива и подключение php-файлов, потом повторный обход и подключение html-шаблонов
ну как-то запутанно и очень ресурсоемко :(

   
 
 автор: sim5   (19.02.2008 в 15:25)   письмо автору
 
   для: Петр   (19.02.2008 в 14:39)
 

Вывод шаблона шапки
Вывод шблона контента, имя которого определяется условием (переменная)
Вывод шаблона подвала

Так что не проще будет? Да и вообще - модуль, это уже нечто разное, а значит и свой РНР код, а значит указать в нем соотвествующий шаблон. Вы что хотите весь сайт запихать в одну страницу кода?

   
 
 автор: Петр   (19.02.2008 в 19:25)   письмо автору
 
   для: sim5   (19.02.2008 в 15:25)
 

Как оказывается сложно все объяснить..
У каждого модуля свой PHP-код и свой HTML-шаблон. Надо сделать так, чтобы была возможноть включать один модуль в другой (типа чтоб могли быть страницы без шапки или без подвала)
кароче говоря, чтоб была полная универсальность, и именно!!! главное, чтобы сначала выполнялись коды модулей, а потом выводились шаблоны... 100 раз писал уже

Ладно, никто мне не поможит :(

   
 
 автор: sim5   (19.02.2008 в 19:35)   письмо автору
 
   для: Петр   (19.02.2008 в 19:25)
 

А что мешает опредилить в индексном шаблоне по переданным переменным:

{if $var eq var}
{include file="head.tpl"}
{else}
{include file="content.tpl"}
{/if}

Тоже самое можно определить в РНР. Может я вас не совсем понимаю, но то что вы говорите, похоже на то, как если бы перед print я бы пропарсил все что у меня получилось, ради того, чтобы узнать - нужно ли в некое место включить что-то.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования