Ну, можно до, можно после. Вот пример:
Основной шаблон pastebin.com/pwRsc7RP
1. Ищем строки вида [[...]] - это наши блоки, запоминаем их
2. По конфигурации роутера определяем контроллер/метод по умолчанию. Пусть это будет /articles/12 - то есть контроллер articles, метод item, параметр id=12. Выводим статью номер 12, передаём в подшаблон, получаем из подшаблона строку, запоминаем.
3. для каждого из блоков из п.1. ищем в специальном конфигурационном файле типа такого pastebin.com/mHpgSfQn соответствия, затем каждый выполняем, фетчим соответствующий шаблон и получаем строку
4. заменяем в основном шаблоне вхождения [[...]] на соответствующие им строки из п. 3
5. передаём в шаблон результат п.2 как переменную main_content.
6. профит.
---
почему я говорил про равноправные блоки? потому что можно обойтись в общем случае без $main_content и п. 2 и 5.
@beduin01 у трейдеров есть целая система примет, когда стоит закрывать позиции. но у них годы практики и предполагается риск потерь. если для вас это нечто далёкое - то просто инвестируйте в образование и другие активы, не заморачивайтесь, когда продавать.
@beduin01 и вот представь, в мире миллиард тугриков, а у тебя 5 из них. и тут раз - и в мире появляется ещё два миллиарда тугриков. то есть, ты уже втрое беднее. не всем такое понравится.
@beduin01 от инфляции всегда страдают в первую очередь держатели денежных знаков, не имеющих средств производства или создания добавленной стоимости. Проще говоря, если ты наёмный работник - тебе как платили 20 кусков так и платят, а купить ты на них можешь уже не ящик водки и ящик колбасы, а по пол-ящика того и другого. А если у тебя свой вино-водочный заводик в подвале - ты просто поднимаешь цену вдвое (инфляция же) и покупаешь так же ящик колбасы. Водка у тебя своя. Вот и вся суть инфляции. Какая именно валюта в ходу - не важно.
@BloodyHistory
> На примере Yii, с которым я работаю, могу вас огорчить - наследование шаблонов там реализовано и прекрасно сочетается с нативным шаблонизатором.
можно пример, как это выглядит?
оверхеда никакого нет, потому что шаблоны компилируются потом в нативные
главные преимущества шаблонизаторов - работа в естественной семантической модели, минимизация вероятности ошибки (можно настроить htmlspecialchars по умолчанию), пользовательские функции, платформонезависимость (вдруг нужно будет перенести шаблоны на другой ЯП). или вот ситуация - каждый блок требует определённых css и js, причём css должны подключаться в хедере итоговой страницы, а js и инлайновые скрипты - в футере.
убеждать не буду, просто поверстайте с моё - и всё поймёте
@ruFelix
> Вы парсите шаблон на предмет наличия в нём блоков? Это плохая затея
Это хорошая затея, вполне себе рабочая. Верстальщик получает список блоков, и если он не тупее обезьяны - он сообразит, что в основной шаблон можно вставить [[block_name]], а каждый блок сверстать отдельно
@BloodyHistory эй, сила в простоте, а необходимость вручную оборачивать каждое эхо в htmlspecialchars - это простота что ли? Вставлять на каждый чих <?php ?> - простота? Или может быть отсутствие возможности наследовать шаблоны - простота?
@dim4ik есть ещё схема, на мой взгляд, оптимальнее. Можно прописать в шаблоне какие подшаблоны могут быть вызваны. В моей CMS есть основной шаблон, в нём указаны блоки. Перед запуском страницы в шаблоне ищутся блоки, полученные имена блоков берутся из отдельного файла, каждый обрабатывается независимо на основе параметров из URL.
Какой вариант удобнее (где прописать блоки - в роутах или в шаблонах) зависит от того, с чем блоки логически ближе связаны. В шаблонах как-то проще делать, потому что а) можно не думать о том, смотреть ли в роутах, какие блоки включены, какие нет, то есть, вызывать по требованию, б) блоки могут дублироваться на разных страницах, описывать их по нескольку раз нет никакого смысла.
@xsash если лезть в настройки - то нужно настроить нжыникс так, чтобы если он не находит файл статики - перекидывал запрос опачу. но это может ухудшить производительность, если кто-нибудь будет массово запрашивать с вашего сайта несуществующие картинки