Пишу систему на пхп. Хочу реализовать там функцию или класс создания шаблона. Смарти и готовые шаблонизаторы использовать не буду не предлагать. Рассмотрю готовые классы если есть такие. MVC приветствую. А теперь подробнее. Допустим у нас есть кнопка создать шапку. До этого в боди ничего не было а при нажатий должен с генерироваться новый шаблон? И какая то метка указывать , что теперь этот шаблон главный.И если зайти на главную будет этот шаблон с шапкой. Вот думаю как же лучше организовать такую систему использовать лучше что то типо парсинга готового шаблона.И делать там вставли типо <parse shapka>тут пхп и штмл шапки</parse> Или же всё таки генерировать новые файлы шаблонов. Да шаблон мы с генерим, а потом допустим надо будет в него же добавить центр или футер.А в цент ещё что то.И что бы всё это учитывалось.То есть достаточно такая не простая система получается. Спасибо за внимание.
Корневой элементы структуры - основной шаблон страницы. Он может иметь неограниченное (или ограниченно, смотря как у вас построено) число вложенных шаблонов. Для удобства формирования разметки можно принять что у шаблонов есть алиасы которые могут использоваться непосредственно в разметке. Не мыслите категориями "боди", "шапка". Вся суть шаблонизации сводится к тому что у вас есть некая иерархическая структура, сущность, которая при вызове метода визуализации выстраивается в определённую разметку, даже просто в определённый текст.
Есть идея.Как напишу класс выложу.Вкратце расскажу.Буду теги назначать переменными.Шаблоны на лету генерировать или как файл.Наверное лучше как файл так как надо стили как то привязывать.Получается почти как у смарти
Тоже не однократно задавался многими вопросами и не стал изобретать велосипед и ставить всякие смарти, твиги и прочие якобы шаблонизаторы. Посидев подумав я пришел к одному выводу сделать шаблон без компиляции, но с возможностью использовать кеш на любое время или навсегда. index.html: Код (PHP): <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> Title </title> </head> <body> {if info} <div> <p> Системные настройки: </p> {if system} <p> {key} => {value} </p> {/system} <p> Шаблонные настройки: </p> {if config} <p> {key} => {value} </p> {/config} </div> {/info} </body> </html> index.php: Код (PHP): <?php $this->file('index'); foreach($this->system() as $value) { $this->ifs('system',array( '{key}'=>$value->key, '{value}'=>$value->value )); } foreach($this->config() as $value) { $this->ifs('config',array( '{key}'=>$value->key, '{value}'=>$value->value )); } unset($value); $this->parse('index',true); echo $this->html('index'); Вывод: Код (PHP): Системные настройки: index => index.php ....... Шаблонные настройки: general => index.php ....... Меня все устроило и я оставил.=)
Я только сейчас задумался смарти пишет что Smarty — компилирующий обработчик шаблонов для PHP. Только как то не укладывается.Насколько мне известно php не компилируемый язык
Ну это понятно.Ну не совсем корректное название. Компиляция (программирование) — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера), выполняемая компилятором.[1]
Компиляцией можно подразумевать не только " машинный код ". Может еще быть в других целях " Сборщик ". В их случае подразумевается, сборка из смарти конструкций в php конструкции. Этим и подразумевают компил.
в общем-то да, но не совсем так. в данном случае чистые инструкции пхп - низкий уровень а сама разметка шаблона - высокий. поэтому термин компиляция вполне применим.
Да вы что серьезно? Я думал шаблоны давным давно в пучине небытия, то есть на помойке. И да, как выше отмечено, php для того в частности и сделан чтоб внутри хмтля оперировать. Кстати в полной аналогии с XSL. Добавлено спустя 11 минут 1 секунду: 33 раза прочитал, не понял. А файлы из папки view тогда нафиг не нужны? Генерить хтмл имеет смысл там где данных столько же, или больше. Например если профтыкать все атрибуты формы и полей через проперти объекта, там же капец какая вьюха будет, и вьюх таких не напасешься. Тут выгоднее генерить из данных. Но если оформления гораздо больше чем данных - то берется хтмля, в него профтыкаются некоторые данные и в буфер. Что тогда такое шаблоны?
Для удобства! Не будет все вперемешку, мы делим логику на части... " php " крутится над ними сверху, а не прям в них. Этим мы не будем засорять серверные скрипты и будет чистота. Главное - не усердствовать, как смарти. Его логика мертва, от нее нет смысла вообще, какой понт делать из html язык программирования? А нет понту, абсолютно лишний мусор.