Добавление блока между Меню и панировочными сухарями


Немного схожу с ума, пытаясь разобраться в этом. Режим отладки мне не помогает.

Я пытаюсь добавить блок непосредственно перед </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">. Это кажется более достижимым, если присмотреться к коду поближе.

Author: Craig, 2018-10-20

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.

 1
Author: Craig, 2018-10-20 20:05:40

Чтобы быть на 100% уверенным, вы хотите добавить новый блок в конце </header>? Если да, может быть, стоит просто добавить этот новый блок в конце заголовка .контейнер контейнер?

<referenceContainer name="header.container">
    <block class="Smartwave\Porto\Block\Template" name="banner" template="Magento_Catalog::product/view/banner.phtml" before="-"/>
</referenceContainer>
 0
Author: Sebastian, 2018-10-20 19:38:28