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 с классом "майк-контейнер" не существует.
Нужно ли мне делать что-то еще?
Спасибо
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>
Результат
Если я удалю блок шаблона, контейнер больше не будет отображаться.
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>