Magento 2: core layouts & blocks (основные макеты и блоки)
Теперь, когда мы знаем, как формируется общий каркас страниц, мы можем погрузиться немного глубже и узнать о макетах и блоках. Если page layouts (макеты страниц) образуют общий каркас с контейнерами, то regular layouts (обычные макеты) как правило служат для размещения блоков контента внутри своих контейнеров.
XML-файлы regular layouts (обычных макетов) в отличии от макетов страниц, создаются в каталогах layout
а не в каталогах page_layout
.
В этом же модуле Magento_Theme давайте откроем его каталог layout
, так как именно здесь определяется основной (core) макет страниц Magento.
Файл default.xml
загружается для всех макетов в Magento. Отметим, что он также может строиться поверх\на основе других макетов, как и макеты страниц, подтягивая связанный XML-код других макетов к собственному.
В этом файле добавляются некоторые новые узлы, но в основном это referenceContainer
и block
узлы. referenceContainer
явно ссылается на контейнер, обычно это один из узлов <container>, определенных в page layout макете страницы.
Например,
<referenceContainer name="after.body.start">ссылается на узел контейнера, определенный в page layout
empty.xml
. (переключиться назад)Затем в этот контейнер добавляются узлы
<block>
. Повторюсь, контейнеры сами по себе ничего не делают, но как только в контейнеры добавляются блоки, контейнер отображает эти блоки.Все узлы
<block>
имеют имя name
, необязательный для блока класс class
, который управляет тем, как он отображается, и другие необязательные атрибуты, такие как template
, который отображает связанный шаблон PHTML. Передавать дополнительные данные в блок, можно также через узлы <argument>
, но об этом мы узнаем немного позже.Блоки намного мощнее, контейнеров. У них могут быть разные типы, которые влияют на то, как блок управляется и отображается. Например, у вас может быть стандартный phtml шаблон, который выводит HTML, а блок (который содержит данный шаблон) управляет элементами на странице, такими как HTML заголовки JavaScript и CSS, текстовыми списками, которые могут выводить список текстовых элементов и так далее.