Как загрузить файл phtml только для домашней страницы? (Magento 2)


Я пытаюсь загрузить файл phtml следующим образом:

Файл /app/design/frontend/name/themename/Magento_Theme/layout/default.xml

    <referenceContainer name="page.top">
        <block class="Magento\Framework\View\Element\Template" name="startphoto" template="html/startphotos.phtml">
            <arguments>
                <argument name="section" xsi:type="string">homepage</argument>
                <argument name="position" xsi:type="number">0</argument>
            </arguments>
        </block>
    </referenceContainer>

Я хочу загрузить его только на главную страницу, но он все еще загружается на каждой странице. Аргументы, похоже, игнорируются.

Author: Amit Bera, 2016-03-29

3 answers

Согласно as, Magento2, default.xml вызывается на каждой странице.Если вы добавите этот код в default.xml, то он будет автоматически вызывать все страницы вашей текущей темы.

Если вы знаете о Концепция обработчика Magento 1.x тогда вы можете понять, что default - это дескриптор , который вызывается на каждой странице . В Magento 2.X, e сам обработчик - это отдельные файлы макета.

Поэтому, если вы хотите добавить файл phtml только дома страница затем вам нужно добавить этот код в cms_index_index.xml (/app/design/frontend/name/themename/Magento_Cms/layout/cms_index_index.xml) файл макета из-за cms_index_index является обработчиком, который вызывает только вызов дома

 24
Author: Amit Bera, 2018-03-17 11:02:24

Для выполнения этой задачи вы можете использовать xml
Внутри cms_index_index.xml поместите xml следующим образом

<referenceContainer name="content">
        <container name="block.container" htmlTag="div" htmlId="slider.container" htmlClass="block-home-container" before="">
            <block class="Magento\Framework\View\Element\Template" name="block.banner" as="block.custom.cms" template="Magento_Theme::block.phtml" after="-" />
        </container>
</referenceContainer>
 9
Author: mrtuvn, 2016-03-29 07:10:09

Создайте имя xml-файла с помощью /app/design/frontend/Vendor/theme/Magento_Theme/layout/cms_index_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
   <referenceContainer name="page.top">
     <block class="Magento\Framework\View\Element\Template" name="startphoto" template="Magento_Theme::html/startphotos.phtml">
        <arguments>
            <argument name="section" xsi:type="string">homepage</argument>
            <argument name="position" xsi:type="number">0</argument>
        </arguments>
     </block>
  </referenceContainer>         
</page>
 5
Author: Prashant Valanda, 2016-04-13 16:30:18