Magento 2: Dodawanie bloków statycznych do określonej sekcji stron za pomocą niestandardowego pliku XML układu modułu

16

W magento 1.x można dodać blok statyczny za pomocą pliku układu xml.

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

Ale jak w Magento 2 możemy to osiągnąć?

Praful Rajput
źródło

Odpowiedzi:

25

Wreszcie mam rozwiązanie. Możesz wywołać blok statyczny w następujący sposób.

<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
źródło
Jak znalazłeś nazwę referencyjną?
Stevie G,
@StevieG Zlokalizuj go lub przeczytaj domyślne implementacje XML, abyś wiedział, jak wszystko jest zbudowane (bardzo przydatne w dłuższej perspektywie).
Melvyn,
8

Można to łatwo zrobić z panelu administracyjnego, wykonując poniższe czynności.

  1. Przejdź do treści -> widżety
  2. Dodaj nowy widżet
  3. Wybierz typ jako Blok statyczny CMS
  4. Wybierz Pakiet projektu / Temat i kontynuuj
  5. Zestaw Widget Title, Storea Sort orderna Storefront propertieskarcie
  6. Wybierz blok statyczny z Widget optionszakładki
  7. Zapisz widżet
  8. Kliknij Add Layout Updateprzycisk Włącz
  9. Wybierz opcję z Display onmenu rozwijanego, np .: Specific pageaby wyświetlić blok na specyfikacji

  10. Wybierz opcję Strona z Pagemenu rozwijanego

  11. Wybierz Kontener z Containermenu rozwijanego
  12. zapisz widżet
Taral Patoliya
źródło
Przydaje się tylko na stronach CMS. Czy możemy go również użyć w naszym niestandardowym module xml?
Praful Rajput,
Podałem tylko przykład strony cms, możesz go użyć dla każdego możliwego modułu lub strony. możesz uzyskać pomysł, wyświetlając listę opcji w menu rozwijanym Wyświetl
Taral Patoliya
To jest doskonałe, czyste i proste. Dziękuję Ci.
dawhoo 14.04.17
5

Jeśli chcesz wywołać blok statyczny na stronie 2 kolumn po lewej stronie, możesz po prostu to zrobić,

tutaj poniżej możesz zmienić za quickblockpomocą identyfikatora bloku statycznego.

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

Above Block działa dobrze dla 2 kolumn po lewej z paskiem bocznym.

Rakesh Jesadiya
źródło
Cześć. Czy chcemy wywoływać blok statyczny tylko dla układu strony kategorii? Zadzwoniłem do bloku statycznego w XML z sidebar.additional, ale to nie działa. Co może być przyczyną?
jack
@Rakesh, <? Php echo $ this-> getLayout () -> createBlock ('Magento \ Cms \ Block \ Block') -> setBlockId ('identiefier_id') -> toHtml (); ?> Użyłem w Success.phtml, nie działa
jafar pinjar
2

W poniższym kodzie zmień „identyfikator_bloku” z bloku CMS utworzonego na pulpicie nawigacyjnym magento i dodaj go do layout.xml. To działa.

<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
źródło