Magento 2: Hinzufügen von statischen Blöcken zu einem bestimmten Seitenabschnitt mit einer benutzerdefinierten XML-Datei für das Modullayout

16

In Magento 1.x ist es möglich, einen statischen Block mithilfe einer XML-Layoutdatei hinzuzufügen.

<reference name="root">
        <block type="cms/block" name="name">
            <action method="setBlockId"><block_id>static-block-id</block_id></action>
        </block>
</reference>

Aber wie können wir es in Magento 2 erreichen?

Praful Rajput
quelle

Antworten:

25

Endlich habe ich die Lösung. Sie können den statischen Block folgendermaßen aufrufen.

<referenceContainer name="footer">
    <block class="Magento\Store\Block\Switcher" name="store_switcher" as="store_switcher" after="footer_links" template="switch/stores.phtml"/>

     <block class="Magento\Cms\Block\Block" name="test">
        <arguments>
            <argument name="block_id" xsi:type="string">promo</argument>
        </arguments>
    </block>
</referenceContainer>
Praful Rajput
quelle
Wie haben Sie den Referenznamen herausgefunden?
Stevie G
@StevieG Suchen Sie sie oder lesen Sie die XML-Standardimplementierungen, damit Sie wissen, wie alles aufgebaut ist (sehr nützlich, um langfristig zu arbeiten).
Melvyn
8

Sie können dies ganz einfach über das Admin-Panel tun, indem Sie die folgenden Schritte ausführen.

  1. Gehen Sie zu Inhalt -> Widgets
  2. Neues Widget hinzufügen
  3. Wählen Sie den Typ als statischen CMS-Block aus
  4. Wählen Sie Design Package / Theme und fahren Sie fort
  5. Set Widget Title, Storeund Sort orderin Storefront propertiesRegisterkarte
  6. Wählen Sie auf der Widget optionsRegisterkarte den statischen Block aus
  7. Speichern Sie das Widget
  8. Klicken Sie auf die Add Layout UpdateSchaltfläche Ein
  9. Wählen Sie eine Option aus Display onDropdown zB Specific pagezum Anzeigen - Block auf spezifi

  10. Wählen Sie Seite aus der PageDropdown-Liste

  11. Wählen Sie Container aus der ContainerDropdown-Liste
  12. Speichern Sie das Widget
Taral Patoliya
quelle
Es ist nur für CMS-Seiten nützlich. Können wir es auch in unserem benutzerdefinierten Modul xml verwenden?
Praful Rajput
Ich habe nur das Beispiel für eine CMS-Seite bereitgestellt. Sie können es für jedes mögliche Modul oder jede Seite verwenden. Sie können sich einen Eindruck verschaffen, indem Sie die Liste der Optionen in der Dropdown-Liste Anzeigen auf
Taral Patoliya,
Das ist ausgezeichnet, sauber und einfach. Vielen Dank.
Dawhoo
5

Wenn Sie static-block in 2columns-left page aufrufen möchten, können Sie dies einfach mit

Hier unten können Sie quickblockIhre statische Blockkennung ändern .

<referenceContainer name="sidebar.main">
            <block class="Magento\Cms\Block\Block" name="quick-block">
                <arguments>
                    <argument name="block_id" xsi:type="string">quickblock</argument>
                </arguments>
            </block>
</referenceContainer>

Oben Block funktioniert gut für 2 Spalten links mit Seitenleiste.

Rakesh Jesadiya
quelle
Hallo, wenn wir den statischen Block dann nur für Kategorieseitenlayout aufrufen wollen? Ich habe statischen Block in XML mit sidebar.additional aufgerufen, aber es funktioniert nicht. Was könnte der Grund sein?
Jack
@Rakesh, <? Php echo $ this-> getLayout () -> createBlock ('Magento \ Cms \ Block \ Block') -> setBlockId ('identiefier_id') -> toHtml (); ?> Habe ich in success.phtml, seine nicht funktioniert
jafar Pinjar
2

Ändern Sie im folgenden Code den "block_identifier" aus dem CMS-Block, der auf dem magento-Dashboard erstellt wurde, und fügen Sie ihn zu layout.xml hinzu. Es klappt.

<referenceContainer name="footer">
       <block class="Magento\Cms\Block\Block" name="block_identifier">
            <arguments>
                <argument name="block_id" xsi:type="string">block_identifier</argument>
            </arguments>
        </block>
    </referenceContainer>
Bhanu Gupta
quelle