Magento 2: Новый контейнер не отображается


Я пытаюсь добавить новый контейнер в макет (расширяя пробел Magento), но он не отображается в HTML. Я добавил следующее в:

App/design/frontend/VENDOR/MYTHEME/Magento_Theme/layout/default.xml

<container name="mike.container" as="mikeContainer" label="Mike Container" htmlTag="div" htmlClass="mike-container" />

Я очистил кэш и обновил страницу, а затем просмотрел исходный код, отображаемый моим браузером, но div с классом "майк-контейнер" не существует.

Нужно ли мне делать что-то еще?

Спасибо

Author: MikeMason, 2016-04-14

2 answers

Ответ Дэвида правильный, но его пример не работает (во всяком случае, для меня).

Если вы поменяете текстовый блок в его примере на блок шаблона, вы увидите, что затем отобразится контейнер.

Мой полный пример, чтобы получить его рабочий:

Приложение/дизайн/интерфейс/ПАКЕТ/ ТЕМА/Magento_Cms/layout/default.xml

<?xml version="1.0" ?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="footer">
            <container name="mike.container" as="mikeContainer" label="Mike Container" htmlTag="div" htmlClass="mike-container">
                <block class="Magento\Framework\View\Element\Template" name="testing" template="Magento_Cms::test.phtml" />
            </container>
        </referenceContainer>
    </body>
</page>

Приложение/дизайн/интерфейс/ПАКЕТ/ ТЕМА/MAGENTO_CMS/шаблоны/тест.phtml

<h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem suscipit, adipisci, cum quos, alias similique ad eum at deserunt eligendi enim dignissimos, unde vero ipsam voluptatibus cumque accusantium! Obcaecati, quasi.</h2>

Результат

enter image description here

Если я удалю блок шаблона, контейнер больше не будет отображаться.

 13
Author: Ben Crook, 2016-04-14 18:39:30

Magento2, похоже, отображает контейнер только в том случае, если дочерние элементы генерируют вывод html: https://github.com/magento/magento2/blob/6ea7d2d85cded3fa0fbcf4e7aa0dcd4edbf568a6/lib/internal/Magento/Framework/View/Layout.php#L571

Поэтому я думаю, что вам нужно иметь по крайней мере один дочерний блок с выводом, чтобы контейнер отображался

Вы должны быть в состоянии проверить это с помощью текстового блока, подобного этому:

<container name="mike.container" as="mikeContainer" label="Mike Container" htmlTag="div" htmlClass="mike-container">
    <block class="Magento\Framework\View\Element\Text" name="testtextblock">
        <arguments>
            <argument name="data" xsi:type="array">
                <item name="text" xsi:type="string">TestText</item>
            </argument>
        </arguments>
    </block>
</container>
 7
Author: David Verholen, 2016-04-14 18:20:58