Зависимости тем и обновления макета в 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>
Author: andy jones, 2016-08-30

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>

Очистите кэш, и ваши изменения отобразятся на вашем сайте.

 2
Author: Rakesh Jesadiya, 2016-08-30 12:53:28