Зависимости тем и обновления макета в Magento 2
Это общий вопрос о Magento 2 и резервном варианте темы, в настоящее время у меня есть тема, которая возвращается к Snowdog - а затем Snowdog возвращается к пустому.
Мой вопрос в том, когда я добавил:
MyVendor/my_theme/Magento_Theme/layout/default.xml
Мне показалось, что я потерял все свои ссылки/поиск/корзину из своего заголовка, я наконец понял, что, поскольку блоков в моей теме не существовало, она ничего не покажет.
Например, я добавил в свою тему следующий файл:
MyVendor/my_theme/Magento_Search/layout/default.xml
После чего я восстановил свою панель поиска и функциональность.
Но почему запасной вариант не сработал так, как я думал?
Насколько я понимаю, если в моей теме нет файлов, она автоматически вернется к использованию конфигурации Snowdog, и, в свою очередь, когда у Snowdog нет файлов, она будет использовать Пустая тема, и когда у Blank нет файлов, он, наконец, попытается использовать основные файлы Magento.
Является ли мое нынешнее понимание неправильным? Или у меня проблема с настройкой?
Изменить:
Вот мой default.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<update handle="default_head_blocks" />
<body>
<block name="require.js" class="Magento\Framework\View\Element\Template" template="Magento_Theme::page/js/require_js.phtml" />
<referenceContainer name="after.body.start">
<block class="Magento\RequireJs\Block\Html\Head\Config" name="requirejs-config" />
<block class="Magento\Translation\Block\Html\Head\Config" name="translate-config" />
<block class="Magento\Translation\Block\Js" name="translate" template="Magento_Translation::translate.phtml" />
<block class="Magento\Framework\View\Element\Js\Cookie" name="js_cookies" template="Magento_Theme::js/cookie.phtml" />
<block class="Magento\Theme\Block\Html\Notices" name="global_notices" template="html/notices.phtml" />
</referenceContainer>
<referenceBlock name="top.links">
<block class="Magento\Theme\Block\Html\Header" name="header" as="header" before="-">
<arguments>
<argument name="show_part" xsi:type="string">welcome</argument>
</arguments>
</block>
</referenceBlock>
<referenceContainer name="main.content">
<block class="Magento\Framework\View\Element\Template" name="skip_to_content.target" before="-" template="Magento_Theme::html/skiptarget.phtml">
<arguments>
<argument name="target_id" xsi:type="string">contentarea</argument>
</arguments>
</block>
</referenceContainer>
<referenceContainer name="header.container">
<container name="header.panel.wrapper" htmlClass="panel wrapper" htmlTag="div" before="-">
<container name="header.panel" label="Page Header Panel" htmlTag="div" htmlClass="panel header">
<block class="Magento\Framework\View\Element\Template" name="skip_to_content" template="Magento_Theme::html/skip.phtml">
<arguments>
<argument name="target" xsi:type="string">contentarea</argument>
<argument name="label" translate="true" xsi:type="string">Skip to Content</argument>
</arguments>
</block>
<block class="Magento\Store\Block\Switcher" name="store_language" as="store_language" template="switch/languages.phtml" />
<block class="Magento\Framework\View\Element\Html\Links" name="top.links">
<arguments>
<argument name="css_class" xsi:type="string">header links</argument>
</arguments>
</block>
</container>
</container>
<container name="header-wrapper" label="Page Header" as="header-wrapper" htmlTag="div" htmlClass="header content">
<block class="Magento\Theme\Block\Html\Header\Logo" name="logo">
<arguments>
<argument name="logo_img_width" xsi:type="number">189</argument>
<argument name="logo_img_height" xsi:type="number">64</argument>
</arguments>
</block>
</container>
</referenceContainer>
<referenceContainer name="page.top">
<block class="Magento\Framework\View\Element\Template" name="navigation.sections" before="-" template="Magento_Theme::html/sections.phtml">
<arguments>
<argument name="group_name" xsi:type="string">navigation-sections</argument>
<argument name="group_css" xsi:type="string">nav-sections</argument>
</arguments>
<block class="Magento\Framework\View\Element\Template" name="store.menu" group="navigation-sections" template="Magento_Theme::html/container.phtml">
<arguments>
<argument name="title" translate="true" xsi:type="string">Menu</argument>
</arguments>
<block class="Magento\Theme\Block\Html\Topmenu" name="catalog.topnav" template="html/topmenu.phtml" ttl="3600" before="-" />
</block>
<block class="Magento\Framework\View\Element\Text" name="store.links" group="navigation-sections">
<arguments>
<argument name="title" translate="true" xsi:type="string">Account</argument>
<argument name="use_force" xsi:type="boolean">true</argument>
<argument name="text" xsi:type="string">
<![CDATA[<!-- Account links -->]]>
</argument>
</arguments>
</block>
<block class="Magento\Framework\View\Element\Template" name="store.settings" group="navigation-sections" template="Magento_Theme::html/container.phtml">
<arguments>
<argument name="title" translate="true" xsi:type="string">Settings</argument>
</arguments>
<block class="Magento\Store\Block\Switcher" name="store.settings.language" template="switch/languages.phtml">
<arguments>
<argument name="id_modifier" xsi:type="string">nav</argument>
</arguments>
</block>
<block class="Magento\Directory\Block\Currency" name="store.settings.currency" template="currency.phtml">
<arguments>
<argument name="id_modifier" xsi:type="string">nav</argument>
</arguments>
</block>
</block>
</block>
<container name="top.container" as="topContainer" label="After Page Header Top" htmlTag="div" htmlClass="top-container" />
<block class="Magento\Theme\Block\Html\Breadcrumbs" name="breadcrumbs" as="breadcrumbs" />
</referenceContainer>
<referenceContainer name="columns.top">
<block class="Magento\Theme\Block\Html\Title" name="page.main.title" template="html/title.phtml" />
<container name="page.messages" htmlTag="div" htmlClass="page messages">
<block class="Magento\Framework\View\Element\Template" name="ajax.message.placeholder" template="Magento_Theme::html/messages.phtml" />
<block class="Magento\Framework\View\Element\Messages" name="messages" as="messages" template="Magento_Theme::messages.phtml" />
</container>
</referenceContainer>
<referenceContainer name="main">
<container name="content.top" label="Main Content Top" />
<container name="content" label="Main Content Area" />
<container name="content.aside" label="Main Content Aside" />
<container name="content.bottom" label="Main Content Bottom" />
</referenceContainer>
<referenceContainer name="page.bottom.container">
<container name="page.bottom" label="Before Page Footer" htmlTag="div" htmlClass="content" />
</referenceContainer>
<referenceContainer name="footer-container">
<container name="footer" as="footer" label="Page Footer" htmlTag="div" htmlClass="footer content">
<block class="Magento\Store\Block\Switcher" name="store_switcher" as="store_switcher" template="switch/stores.phtml" />
<block class="Magento\Framework\View\Element\Html\Links" name="footer_links">
<arguments>
<argument name="css_class" xsi:type="string">footer links</argument>
</arguments>
</block>
<block class="Magento\Theme\Block\Html\Footer" name="copyright" template="html/copyright.phtml" />
<block class="Magento\Framework\View\Element\Template" name="report.bugs" template="Magento_Theme::html/bugreport.phtml" />
</container>
</referenceContainer>
<referenceContainer name="before.body.end">
<block class="Magento\Theme\Block\Html\Footer" name="absolute_footer" template="html/absolute_footer.phtml" />
</referenceContainer>
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\FormKey" name="formkey" />
</referenceContainer>
</body>
</page>
1 answers
Всякий раз, когда вам нужно переопределить файл макета ядра, вы должны хранить только необходимый код внутри xml, а не полный xml-код вашего основного файла.
Храните внутри своего файла темы, для default.xml
magento2/app/design/frontend/Vendor/themename/Magento_Theme/layout/default.xml
Теперь внутри 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>
<!-- keep your code here -->
</body>
</page>
Очистите кэш, и ваши изменения отобразятся на вашем сайте.