Добавление блока между Меню и панировочными сухарями
Немного схожу с ума, пытаясь разобраться в этом. Режим отладки мне не помогает.
Я пытаюсь добавить блок непосредственно перед </header>
только на страницах продуктов. Я создал файл phtml с моим контентом (баннером). И я добавил приведенный ниже код в:
<theme>/<child>/Magento_Catalog/templates/layout/catalog_product_view.xml
<referenceContainer name="root">
<block class="Smartwave\Porto\Block\Template" name="banner" template="Magento_Catalog::product/view/banner.phtml"/>
</referenceContainer>
<move element="banner" destination="header" after="-"/>
В моей голове вышесказанное:
- Загружает блок в корень страницы с помощью
<referenceContainer name="root">
- Затем перемещает блок в контейнер
header
:<move element="banner" destination="header"...
- И ставит это в самом низу:
...after="-"/>
Очевидно, однако, что это не так. Я использовал тонну проб и ошибок с различными результатами. Он либо загружается в местах, которые мне не нужны, либо вообще не появляется.
Редактировать
Похоже, что </header>
является частью header.phtml
, и поэтому я не могу выполнить то, что я намеревался сделать.
Однако я также был бы доволен загрузкой блоков МЕЖДУ </Header>
и <div class="breadcrumbs">
. Это кажется более достижимым, если присмотреться к коду поближе.
2 answers
Я не уверен, правильно ли я реализовывал основные ответы или решение было чисто специфичным для темы Порту. Однако, поняв, что я не могу добавить блок между Navigational Menu
и </header>
(потому что они были жестко закодированы в один файл), я вместо этого решил загрузить блок непосредственно после </header>
.
Затем я реализовал это (без строки <move...
), которая, похоже, работает так, как ожидалось.
<referenceContainer name="page.wrapper">
<block class="Smartwave\Porto\Block\Template" name="banner" template="Magento_Catalog::product/view/banner.phtml" after="porto_header"/>
</referenceContainer>
Я знаю, какие виджеты могли бы послужить потенциальным решением, но изучив это, блок виджетов загружает довольно много divs
ниже по странице. Следовательно, он был недостаточно близко. Если это вас не беспокоит, то я рекомендую ознакомиться с этой статьей на stackexchange.
Чтобы быть на 100% уверенным, вы хотите добавить новый блок в конце
</header>
?
Если да, может быть, стоит просто добавить этот новый блок в конце заголовка .контейнер контейнер?
<referenceContainer name="header.container">
<block class="Smartwave\Porto\Block\Template" name="banner" template="Magento_Catalog::product/view/banner.phtml" before="-"/>
</referenceContainer>