Возник вопрос по структуре сайта, как это принято в Bitrix. Есть мнение, что Bitrix имеет блочную структуру, следовательно, разметка в шаблоне должна быть проста:
header
#WORK_AREA#
footer
Допустим, имеем сайт, где есть левый блок с модулями, а также, центральная часть с выводом компонентов во всю ширину и другой разметки страниц - область контента, как ее принято называть.
Вопрос к структуре - как это правильнее организовать в Bitrix? Есть мнение, что, так как Bitrix основан на блоках, область #WORK_AREA# не должна быть на уровне шаблона жестко вынесена в , но, наоборот, вся структура должна генерироваться напрямую в файлах конкретных страниц, то есть, путем перетаскивания блоков в визуальном редакторе.
Я же имею другое мнение:
header
<div id = "leftblock">
включаемая область
</div>
<div id = "content"
#WORK_AREA#
</div>
footer
То есть, задавать жесткую структуру непосредственно в файлах шаблона, и затем на сайте помещать на страницу каждый компонент в специально отведенное ему место: если компонент предназначен для левого блока, то редактировать включаемую область, если для контентного блока - редактировать общую разметку контента.
Структура только кажется жесткой. На деле, 99.9% сайтов имеют на всех своих страницах именно такую структуру, с небольшими отклонениями. Например, на некоторых страницах область контента может быть растянута на всю ширину - это делается на уровне css, и блок без новостей просто не будет занимать места. Точно так же - и с теми страницами, где должен присутствовать не левый, а правый блок для "модулей". Во всех исключительных случаях использовать отдельный шаблон для "выдающихся" страниц.
Таким образом, избежим лишней работы по генерации для каждой страницы той структуры, которую можем сгенерировать единственный раз для всего шаблона в целом. А переопределенные шаблоны компонентов должны, по-моему, влиять только на их внешнее отображение, но, ни в коем случае, не на позицию на странице.
Но я почти не имею опыта в работе с системой Bitrix, и все эти мысли - от общей практики работы с другими системами и Framework'ами, поэтому вполне могу ошибаться.