принцип шаблонизации

Фанат

oncle terrible
Команда форума
Вот, к сожалению, у меня нет ни реализации описанного идеального приложения, ни даже нормального шаблона.
Я пишу мало, и обхожусь такой структурой в файле, скажем showthread.php:
include $tpl_header;
if ($plain) include tpl_thread_plain.php;
else include tpl_thread_tree.php;
include $tpl_footer;

но я надеюсь, кто-нибудь из присутствующих приведет, все-таки, пример большого развесистого шалабона. На блице, например.

Кстати, в плане идеального приложения рекомендую посмотреть Menalto Gallery 2
Я внутрь к ней не заглядывал, но выглядит она именно идеально спроектированным приложением.
 

baev

‹°°¬•
Команда форума
приведет, все-таки, пример большого развесистого шалабона
Ну, пример, мягко говоря, не идеальный, но принцип вполне наглядно демонстрирует.

Мастер-шаблон:
Код — http://phpclub.ru/paste/2396
Так это выглядит «в реале» — http://lavr.su/

У каждого типа контента свои шаблоны, которые мастер-шаблон и инклюдит. И у «Статей», и у «Тестов», и у «Хитов продаж» — собственные «хедер», «футер» и шаблон элемента контента.
Пример («Статьи»): http://phpclub.ru/paste/2397
 

Фанат

oncle terrible
Команда форума
baev, спасибо!
Это смарти с измененными скобками?
 

baev

‹°°¬•
Команда форума
Это смарти с измененными скобками?
Грубо говоря — да.
Модуль шаблонизации из Zikula: называется pnRender, в принципе, представляет из себя Smarty «в обёртке».
Синтаксис — полностью Smarty, за исключением скобок.
 

Alexandre

PHPПенсионер
но я надеюсь, кто-нибудь из присутствующих приведет, все-таки, пример большого развесистого шалабона. На блице, например
PHP:
<html><head>
<title>Welcome to my framework!</title>
<script  src="/js/lib/jquery.fs.js"></script>
{{BEGIN js}}
<script  src="/js/{{src}}"></script>
<script>
 window.onload = function(){   	
 	{{run}}
 	var content = $('#content');
	var ch = content.children;	
  }
 </script>
{{END}}
</head>
<body bgcolor="white" text="black">
<center><h1><a href="/">Welcome to my framework!</a></h1></center>
{{BEGIN login}}{{login}}{{END}}
{{BEGIN page}}
<table>
<tr>
<td>
<div style="width: 100%">
{{page}}
</div>
</td>
</tr>
</table>
{{END page}}
{{BEGIN mail}}{{mail}}{{END}}
{{BEGIN debug}}
<div style="width:100%;  color: blue; padding-top: 20px;"">
{{sql}} <br>
time={{time}} sec
</div>
{{END debug}}</body></html>
в шаблоне несколько "контентных блоков"
например, для каждого приложения мы можем подключать свой кусок js
или например если нам нужен блок новости, то вставляем {{BEGIN news}}{{news}}{{END}}а контролер новости (сам контролер будет определятся маппингом по урлу ) нам сгенерит контент для наших новостей.

-~{}~ 07.02.10 02:18:

Почему не хорошо? Как по мне это реализация паттерна Lazy Initialize в глобальном уровне. У меня все модули пассивны, кроме основного куда пришел реквест. Например на страницу товара, загрузился модуль продуктов. Он инитиализировал базовые данные нужные мне для загрузки - а именно вставил 1 лишь Обьект Product( id ) который реализует лейзи, и в шаблоне - мне если надо название продукта - контроллер его подхватит и загрузит, надо сопутсвующие товары - подхватит и загрузит. Надо сбоку блок новостей? Подхватит хелпер и загрузит. Это позволяет не лезть в программный и код и загружать минимальные потребные данные для отображения. Когда я перешел на такой подход - я ощутил значительное уменьшение оверхеда.
HraKK, у меня классическое MVC без всяких закидонов, время генерации стр на простом ноуте (2.2 Гг 2Мб ) 5 -7 мс (зависит от запроса). И какой здесь оверхед???? и это чисто без кеширования. с кешированием выдерживает более 800 запросов в сек.
сколько времени генерится страница у симфони или mzz на аналогичном железе? а у хваленного Битрикса?
архитектура nginx 8.16/php-fpm 5.2/memcached/mysql 5(родной, но планирую использовать перкону)
PS. спасибо товарищу fixxxer за инновации в обласи CMS
 

AmdY

Пью пиво
Команда форума
>> кешированием выдерживает более 800 запросов в сек.
а зачем? хайлодов в интернете менее 1-го процента, для остальных важно удобство, качество и скорость разработки.
не нужно каждого, кто садиться за руль готовить к выступлениям в формуле 1, это их сбивает.
 

HraKK

Мудак
Команда форума
Alexandre
Да? А ты сравни расширяемость, гибкость mzz или симфони с твоей.
Хотя я не видел, не буду судить, можешь выслать экземпл, если не затруднит? Мне будет очень интересно.

-~{}~ 07.02.10 16:04:

а зачем? хайлодов в интернете менее 1-го процента, для остальных важно удобство, качество и скорость разработки.
Вот это я и имел ввиду.

Но все равно, если не секрет вышили, пожалуйста.
 

Alexandre

PHPПенсионер
у меня пока не так много кода и не все так красиво, как у тебя...
могу предложить только как идею. Но, скажу, что расширяемость там нормальная. скинь в привате мыло.
 

HraKK

Мудак
Команда форума
Ну красиво у меня внешне) А вот внутренее, не знаю. В любом случае всем известно что я любитель велосипедных движков :)

Кидаю
 

Alexandre

PHPПенсионер
а зачем? хайлодов в интернете менее 1-го процента, для остальных важно удобство, качество и скорость разработки.
нет, ты не понимаешь. В проекте главное, чтоб дизайнер был толковый! А остальное все мелочи... :))
так думает почти каждый руководить проекта
 

AmdY

Пью пиво
Команда форума
я тоже так думаю, примерно так, по мере убывания важности для заказчика:
менеджер(они договариваются о заказе), сеошник(чтобы сайт не пропал в бездне), дизайнер(шоб красиво и с рюшечками), верстальщик (чтобы не запоганить работу дизайнера, а ещё AJAX), программист(без этих дармоедов сложно обойтись, хотя зачастую можно и статический html).
потому так популярен битрикс, заказчику плевать, что внутри.
 
Сверху