Magento 2: Agregar bloques estáticos a una sección específica de páginas con un archivo XML de diseño de módulo personalizado

16

En magento 1.x es posible agregar un bloque estático usando el archivo de diseño xml.

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

Pero, en magento 2, ¿cómo podemos lograrlo?

Rajput orante
fuente

Respuestas:

25

Finalmente obtuve la solución. Puede llamar al bloque estático de la siguiente manera.

<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>
Rajput orante
fuente
¿Cómo descubriste el nombre de referencia?
Stevie G
De cualquier @StevieG localizarlo o leer las implementaciones XML por defecto para que sepa cómo todo se construye (muy útil para hacer por largo plazo).
Melvyn el
8

Se puede hacer fácilmente desde el panel de administración siguiendo los pasos a continuación.

  1. Vaya a Contenido -> Widgets
  2. Añadir nuevo widget
  3. Seleccione el tipo como bloque estático CMS
  4. Seleccione paquete de diseño / tema y continúe
  5. Conjunto Widget Title, Storey Sort orderen la Storefront propertiespestaña
  6. Seleccione bloque estático en la Widget optionspestaña
  7. Guarda el widget
  8. Haga clic en el Add Layout Updatebotón
  9. Seleccione la opción del Display onmenú desplegable, por ejemplo: Specific pagepara mostrar el bloque en especifi

  10. Seleccionar página del Pagemenú desplegable

  11. Seleccionar contenedor del Containermenú desplegable
  12. guardar el widget
Taral Patoliya
fuente
Es útil solo para páginas CMS. ¿Podemos usarlo en nuestro módulo personalizado xml también?
Praput Rajput
Solo proporcioné el ejemplo de la página cms, puede usarlo para cada módulo o página posible. puede hacerse una idea al ver la lista de la opción en la pantalla desplegable
Taral Patoliya
Esto es excelente, limpio y simple. Gracias.
dawhoo
5

Si desea llamar al bloque estático en la página 2columnas a la izquierda, simplemente puede hacerlo usando,

a continuación puede cambiar quickblockcon su identificador de bloque estático.

<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 funciona bien para 2 columnas a la izquierda con barra lateral.

Rakesh Jesadiya
fuente
Hola Si queremos llamar al bloque estático solo para el diseño de página de categoría, ¿entonces? Llamé al bloque estático en xml con sidebar.additional pero no funciona. ¿Cuál podría ser la razón?
Jack
@Rakesh, <? Php echo $ this-> getLayout () -> createBlock ('Magento \ Cms \ Block \ Block') -> setBlockId ('identiefier_id') -> toHtml (); ?>
Usé
2

En el siguiente código, cambie el "identificador de bloque" del bloque CMS creado en el panel de Magento y agréguelo a layout.xml. Funciona.

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