Magento 2:使用自定义模块布局xml文件将静态块添加到页面的特定部分


16

在magento 1.x中,可以使用xml布局文件添加静态块。

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

但是,在magento 2中我们如何实现呢?

Answers:


25

终于我找到了解决方案。您可以使用以下方式调用静态块。

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

您是如何找到参考名称的?
Stevie G

@StevieG要么找到它,要么阅读默认的XML实现,以便您了解所有内容的构建方式(长期使用非常有用)。
Melvyn

8

您可以按照以下步骤在管理面板中轻松完成此操作。

  1. 转到内容->小部件
  2. 添加新的小部件
  3. 选择类型作为CMS静态块
  4. 选择设计包/主题并继续
  5. 设置Widget TitleStore然后Sort orderStorefront properties标签中
  6. Widget options选项卡中选择静态块
  7. 保存小部件
  8. 点击开Add Layout Update按钮
  9. Display on下拉菜单中选择选项,例如::Specific page按指定显示块

  10. Page下拉菜单中选择页面

  11. Container下拉列表中选择容器
  12. 保存小部件

仅对CMS页面有用。我们也可以在自定义模块xml中使用它吗?
Praful Rajput

我仅提供了cms页面示例,您可以将其用于每个可能的模块或页面。你可以看到选项的列表中显示的下拉得到一个想法
Taral Patoliya

这非常好,干净而且简单。谢谢。
dawhoo

5

如果您想在左侧2列中调用static-block,只需使用以下方法即可:

在下面,您可以quickblock使用静态块标识符进行更改。

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

上方的Block对于带有侧边栏的左侧2列工作正常。


您好如果我们只想为类别页面布局调用静态块,那么?我确实使用sidebar.additional在xml中调用了静态块,但是它不起作用。可能是什么原因?
杰克

@Rakesh,<?php echo $ this-> getLayout()-> createBlock('Magento \ Cms \ Block \ Block')-> setBlockId('identiefier_id')-> toHtml(); 我在success.phtml中使用了它,它不起作用
jafar pinjar

2

在以下代码中,更改在magento仪表板上创建的CMS块中的“ block_identifier”,并将其添加到layout.xml中。有用。

<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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.