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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Шаблон Smarty из строки

Сообщения:  [1-10]   [11-19] 

 
 автор: 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 я бы пропарсил все что у меня получилось, ради того, чтобы узнать - нужно ли в некое место включить что-то.

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

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

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

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

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

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

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

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

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

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

   
 
 автор: Петр   (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 в 13:45)   письмо автору
 
   для: Петр   (19.02.2008 в 12:47)
 

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

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

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

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

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

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

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

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

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

   

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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