Когда я читаю документацию по макетам страниц ( http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html#layout-types-page ), я вижу, что следующие инструкции в этом документе XML допускаются:
<container>
<referenceContainer>
<move>
<update>
Так как <referenceBlock name="block.name" remove="true" />
это не одна из разрешенных инструкций, как я могу удалить определенный элемент в определенном макете страницы?
То, что я хочу для топ-категорий, это совсем другой дизайн страницы. Мне не нужны определенные контейнеры и блоки для этого дизайна. Для этих категорий я хочу показывать только дочерние категории, а не товары.
Теперь я добавил следующие строки в макет своей страницы: (в design\frontend\Vendor\Name-of-theme\Magento_Theme\page_layout\catalog-blocks.xml
)
<move element="category.image" destination="delete"></move>
<move element="category.description" destination="delete"></move>
<move element="category.products" destination="delete"></move>
<move element="page.main.title" destination="delete"></move>
В design\frontend\Vendor\Name-of-theme\Magento_Theme\layouts.xml
я добавил:
<layout id="catalog-blocks">
<label translate="true">Catalog Blocks</label>
</layout>
Я дал все верхние категории этого макета страницы блоков каталога в админке.
Затем в основной макет ( design\frontend\Vendor\Name-of-theme\Magento_Theme\layout\default.xml
) я добавил:
<referenceBlock name="delete" remove="true" />
Таким образом, весь блок удаления будет удален со всеми вещами, которые я переместил сюда, в макете страницы. Это хорошо работает! Он достигает именно того, чего я хочу, но все это кажется мне немного хакерским.
Считается ли это хорошей практикой? Если нет, то что было бы хорошей альтернативой?
Изменить 1 : изменил remove
-tag в моем вопросе с правильным, чтобы избежать путаницы.
Редактировать 2 : немного больше информации о файлах и местах расположения файлов.