Magento 2: Adicionando blocos estáticos a seções específicas de páginas com arquivo xml de layout de módulo personalizado

16

No magento 1.x, é possível adicionar um bloco estático usando o arquivo de layout xml.

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

Mas, no magento 2, como podemos alcançá-lo?

Praful Rajput
fonte

Respostas:

25

Finalmente eu consegui a solução. Você pode chamar o bloco estático da seguinte maneira.

<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
fonte
Como você descobriu o nome de referência?
Stevie G
@StevieG Localize ou leia as implementações XML padrão para saber como tudo é construído (muito útil a longo prazo).
Melvyn
8

Isso pode ser feito facilmente no painel do administrador, seguindo as etapas abaixo.

  1. Vá para Conteúdo -> Widgets
  2. Adicionar novo widget
  3. Selecione o tipo como bloco estático do CMS
  4. Selecione Design Package / Theme e continue
  5. Set Widget Title, Storee Sort orderno Storefront propertiesseparador
  6. Selecione o bloco estático na Widget optionsguia
  7. Salve o widget
  8. Clique no Add Layout Updatebotão
  9. Selecione Opção no Display onmenu suspenso, por exemplo: Specific pagepara exibir o bloco em especifi

  10. Selecione Página no Pagemenu suspenso

  11. Selecione Container no Containermenu suspenso
  12. salve o widget
Taral Patoliya
fonte
É útil apenas para páginas do CMS. Também podemos usá-lo em nosso módulo xml personalizado?
Praful Rajput
Forneci apenas o exemplo da página cms, você pode usá-lo para todos os módulos ou páginas possíveis. você pode ter uma ideia vendo a lista da opção no menu suspenso Exibir
Taral Patoliya
Isso é excelente, limpo e simples. Obrigado.
dawhoo
5

Se você deseja chamar o bloco estático na página esquerda de 2 colunas, basta fazê-lo usando,

aqui abaixo, você pode alterar quickblockcom o seu identificador de bloco 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>

O bloco Acima está funcionando bem por 2 colunas à esquerda com a barra lateral.

Rakesh Jesadiya
fonte
Oi Se quisermos chamar o bloco estático apenas para o layout da página da categoria, então? Eu chamei o bloco estático em xml com sidebar.additional, mas não está funcionando. Qual seria a razão?
jack
@Rakesh, <? Php echo $ this-> getLayout () -> createBlock ('Magento \ Cms \ Bloco \ Bloco') -> setBlockId ('identiefier_id') -> toHtml (); ?> I usado em success.phtml, não o seu trabalho
Jafar pinjar
2

No código a seguir, altere o "block_identifier" do bloco CMS criado no painel magento e adicione-o ao 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
fonte