Magento 2: Ajout de blocs statiques à une section spécifique de pages avec un fichier xml de disposition de module personnalisé

16

Dans magento 1.x, il est possible d'ajouter un bloc statique en utilisant un fichier de disposition xml.

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

Mais, dans magento 2, comment pouvons-nous y parvenir?

Praful Rajput
la source

Réponses:

25

J'ai finalement trouvé la solution. Vous pouvez appeler un bloc statique de la manière suivante.

<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
la source
Comment avez-vous trouvé le nom de référence?
Stevie G
@StevieG Localisez-le ou lisez les implémentations XML par défaut pour savoir comment tout est construit (très utile à faire à long terme).
Melvyn
8

Cela peut être fait facilement à partir du panneau d'administration en suivant les étapes ci-dessous.

  1. Allez dans Contenu -> Widgets
  2. Ajouter un nouveau widget
  3. Sélectionnez le type comme bloc statique CMS
  4. Sélectionnez le package / thème de conception et continuez
  5. Ensemble Widget Title, Storeet Sort orderdans l' Storefront propertiesonglet
  6. Sélectionnez un bloc statique dans l' Widget optionsonglet
  7. Enregistrez le widget
  8. Cliquez sur le Add Layout Updatebouton
  9. Sélectionnez l'option dans la Display onliste déroulante, par exemple: Specific pagepour afficher le bloc sur les spécifications

  10. Sélectionnez la page dans la Pageliste déroulante

  11. Sélectionnez Conteneur dans la Containerliste déroulante
  12. enregistrer le widget
Taral Patoliya
la source
Il n'est utile que pour les pages CMS. Pouvons-nous également l'utiliser dans notre module xml personnalisé?
Praful Rajput
J'ai fourni l'exemple de la page cms uniquement, vous pouvez l'utiliser pour chaque module ou page possible. vous pouvez vous faire une idée en voyant la liste de l'option dans la liste déroulante Afficher sur
Taral Patoliya
C'est excellent, propre et simple. Je vous remercie.
dawhoo
5

Si vous voulez appeler un bloc statique dans la page de 2 colonnes à gauche, vous pouvez simplement le faire en utilisant,

ci-dessous, vous pouvez changer quickblockavec votre identifiant de bloc statique.

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

Le bloc ci-dessus fonctionne bien pour 2 colonnes à gauche avec la barre latérale.

Rakesh Jesadiya
la source
Salut Si nous voulons appeler le bloc statique uniquement pour la mise en page de la catégorie, alors? j'ai appelé un bloc statique en xml avec sidebar.additional mais cela ne fonctionne pas. Quelle pourrait être la raison?
jack
@Rakesh, <? Php echo $ this-> getLayout () -> createBlock ('Magento \ Cms \ Block \ Block') -> setBlockId ('identiefier_id') -> toHtml (); ?> J'ai utilisé dans success.phtml, son ne fonctionne pas
jafar pinjar
2

Dans le code suivant, modifiez le "block_identifier" du bloc CMS créé sur le tableau de bord magento et ajoutez-le à layout.xml. Ça marche.

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