Очень хочется догрызть тему шаблонизации.
Соответственно, хочется установить два основных правила, в соответствии с которыми проводить все дальнейшие рассуждения, сравнения и ругань.
1. Честность.
Давайте будем честными и объективными. Давайте будем учёными, а не торгашами.
Наша задача - найти истину, а не протолкнуть свой товар.
Поэтому давайте искать недостатки в своих идеях, а достоинства - в чужих.
Не будем уподобляться некоторым авторам, которые используют искусственные примеры, выгодно демонстрирующие свое творение и невыгодно - противника. Давайте делать наоборот?
2. Реалистичность.
Это самое сложное и вообще никем никогда не применяемое правило.
Я и сам не избежал этого подвоха в своих статьях и рассуждениях:
Как пример шаблона всегда рассматривается простая страница примитивного хомяка.
При том что владельцев хомяков проблемы шаблонизации вообще не волнуют.
А реальная проблема, которую призваны решать шаблонизаторы - это сборка шаблона сложного сайта
В понимании принципа шаблонизации каждый девелопер проходит три(?) основные стадии:
1. Шаблон - это шапка сайта. контент отдельных страниц ничтоже сумняшеся выводится прямо из скрипта.
2. Шаблонов должно быть два вида - основной для группы страниц (с шапкой и подвалом) и отдельные для каждого типа страниц.
3. Но тут вдруг оказывается, основной шаблон занимается не только (а часто - даже не столько) включением шаблона конкретной страницы в "дизайн сайта", сколько включением ещё десятка(!) модулей, каждый со своим отдельным выводом. Разрушается такая стройная теория линейного выполнения - запустился модуль, получил данные, определил файл шаблона, запустил шаблонизатор. Ну да, для основного блока данные получены, а для остальных их где брать? Скажем, облако тегов - когда и где для него данные получать?
Получается, нужен какой-то супервизор, который будет знать, какие блоки данных нам надо подгрузить ДО момента, когда мы будем начинать шаблонизацию.
Насколько я понимаю, этот супервизор и является основной проблемой и местом ломания копий. Собственно, противоречие сие описал Котеров ещё в прошлом веке: активный шаблон vs. пассивный.
Активный сам занимается поиском модулей, которые должны дать ему данные, а пассивный занимается только выводом, а поиском модулей занимается кто-то другой.
И в этом контексте давайте в качестве примера рассматривать шаблон гипотетической страницы контактов сайта. На который выводится одна-единственная переменная - тупой хтмл прямиком из TinyMCE.
Этим мы закрываем вопрос шаблонизации отдельной страницы.
Но при этом на странице ещё выводится форма авторизации/привет-ссылка на кабинет, облако тегов, сайдбар с лентой новостей и баннерка. На странице новостей вместо ленты выводится опорос.
И давайте теперь будем пробовать со всей этой хернёй взлететь.
ещё важные правила:
3. Одна из целей шаблонизации - не начинать вывод, если нет всех необходимых данных.
4. Еще одна цель - по максимуму уменьшить количество логики в шаблоне.
Соответственно, хочется установить два основных правила, в соответствии с которыми проводить все дальнейшие рассуждения, сравнения и ругань.
1. Честность.
Давайте будем честными и объективными. Давайте будем учёными, а не торгашами.
Наша задача - найти истину, а не протолкнуть свой товар.
Поэтому давайте искать недостатки в своих идеях, а достоинства - в чужих.
Не будем уподобляться некоторым авторам, которые используют искусственные примеры, выгодно демонстрирующие свое творение и невыгодно - противника. Давайте делать наоборот?
2. Реалистичность.
Это самое сложное и вообще никем никогда не применяемое правило.
Я и сам не избежал этого подвоха в своих статьях и рассуждениях:
Как пример шаблона всегда рассматривается простая страница примитивного хомяка.
При том что владельцев хомяков проблемы шаблонизации вообще не волнуют.
А реальная проблема, которую призваны решать шаблонизаторы - это сборка шаблона сложного сайта
В понимании принципа шаблонизации каждый девелопер проходит три(?) основные стадии:
1. Шаблон - это шапка сайта. контент отдельных страниц ничтоже сумняшеся выводится прямо из скрипта.
2. Шаблонов должно быть два вида - основной для группы страниц (с шапкой и подвалом) и отдельные для каждого типа страниц.
3. Но тут вдруг оказывается, основной шаблон занимается не только (а часто - даже не столько) включением шаблона конкретной страницы в "дизайн сайта", сколько включением ещё десятка(!) модулей, каждый со своим отдельным выводом. Разрушается такая стройная теория линейного выполнения - запустился модуль, получил данные, определил файл шаблона, запустил шаблонизатор. Ну да, для основного блока данные получены, а для остальных их где брать? Скажем, облако тегов - когда и где для него данные получать?
Получается, нужен какой-то супервизор, который будет знать, какие блоки данных нам надо подгрузить ДО момента, когда мы будем начинать шаблонизацию.
Насколько я понимаю, этот супервизор и является основной проблемой и местом ломания копий. Собственно, противоречие сие описал Котеров ещё в прошлом веке: активный шаблон vs. пассивный.
Активный сам занимается поиском модулей, которые должны дать ему данные, а пассивный занимается только выводом, а поиском модулей занимается кто-то другой.
И в этом контексте давайте в качестве примера рассматривать шаблон гипотетической страницы контактов сайта. На который выводится одна-единственная переменная - тупой хтмл прямиком из TinyMCE.
Этим мы закрываем вопрос шаблонизации отдельной страницы.
Но при этом на странице ещё выводится форма авторизации/привет-ссылка на кабинет, облако тегов, сайдбар с лентой новостей и баннерка. На странице новостей вместо ленты выводится опорос.
И давайте теперь будем пробовать со всей этой хернёй взлететь.
ещё важные правила:
3. Одна из целей шаблонизации - не начинать вывод, если нет всех необходимых данных.
4. Еще одна цель - по максимуму уменьшить количество логики в шаблоне.
