Wie lade ich eine HTML-Datei nur für die Homepage? (Magento 2)

7

Ich versuche, eine HTML-Datei wie folgt zu laden:

Datei /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>

Ich möchte es nur auf der Homepage laden, aber es wird immer noch auf jeder Seite geladen. Die Argumente scheinen ignoriert zu werden.

Oliver Schmid
quelle

Antworten:

23

Gemäß wie Magento2, default.xmlist Anruf bei jedem page.If Sie diesen Code hinzufügen , um sie default.xmldann würde automatisch alle Seiten Ihrer aktuellen Thema nennen sein.

Wenn Sie mit dem Magento 1.x-Handler-Konzept vertraut sind , können Sie verstehen, dass dies defaultein Handle ist, das auf jeder Seite aufgerufen wird. In Magento 2.X besteht der Handler aus einzelnen Layoutdateien.

Wenn Sie also eine HTML-Datei nur auf der Startseite hinzufügen möchten, müssen Sie diesen Code in der Layoutdatei cms_index_index.xml( /app/design/frontend/name/themename/Magento_Cms/layout/cms_index_index.xml) hinzufügen, da cms_index_indexes sich um einen Handler handelt, der nur zu Hause aufgerufen wird

Amit Bera
quelle
Wenn ich mein Anpassungsmodul auf der Produktseite nur mit einer Modul-XML-Datei aufrufen muss, wie geht das? Wie das Hinzufügen eines Downloads, der vor dem Hinzufügen zum Warenkorb verknüpft ist, ohne die Datei catalog_product_view.xml zu ändern.
Hitesh Vaghasiya
Wenn Sie ein benutzerdefiniertes Modul erstellt haben, erstellen Sie es catalog_product_view.xmlbei Ihrem app\code\[vendorname]\[ModuleName]view\frontend\layout* Schreiben Sie hier
Amit Bera
8

Sie können XML verwenden , diese Aufgabe zu tun
Innerhalb cms_index_index.xmlput xml wie diese

<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>
mrtuvn
quelle
5

Erstellen Sie einen XML-Dateinamen mit /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>
Prashant Valanda
quelle
2
Geben Sie besser den Pfad für die XML-Datei an, um die Antwort weiter zu verbessern. Danke
Mujahidh
Wenn Sie diese XML-Datei wie diese verwenden, wo wäre die html/startphotos.phtml relativ zur XML-Datei? Ich kann es nicht herausfinden.
Alex Timmer
1
aktualisierte Antwort check it
Prashant Valanda