Как загрузить файл 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>
Я хочу загрузить его только на главную страницу, но он все еще загружается на каждой странице. Аргументы, похоже, игнорируются.
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
является обработчиком, который вызывает только вызов дома
Для выполнения этой задачи вы можете использовать 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>
Создайте имя 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>