11

我正在创建一个 magento 2 主题。我想在 cms 主页上显示自定义块。

我想知道在 phtml 和 xml 布局、cms 页面内容中显示静态块

我能怎么做?

4

4 回答 4

37

请尝试使用以下代码。

在 Phtml 文件中:

<?php echo $this->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('block_identifier')->toHtml();?>

在 CMS 内容中:

{{block class="Magento\\Cms\\Block\\Block" block_id="block_identifier"}}

在 XML 文件中:

<referenceContainer name="content">
    <block class="Magento\Cms\Block\Block" name="block_identifier">
        <arguments>
            <argument name="block_id" xsi:type="string">block_identifier</argument>
        </arguments>
    </block>
</referenceContainer>
于 2015-09-17T02:36:36.900 回答
1

以上是正确的,另外,主页的 xml 文件cms_index_index.xmlMagento_Cms文件夹内(这应该放在您自己的包/主题文件夹中,而不是在Magento/blankor中app/code)。

只需将上述 xml 代码放在该<body>文件的标记内,根据缓存设置,您可能需要清除它们才能看到调整。

于 2015-09-24T13:12:40.310 回答
1

这些都不适用于通过 default.xml 放置静态块 请提交适当的示例。在 2.0.7 中,当我在管理中创建一个名为 socialimg / socialimg 的静态块作为块标识符后,将以下内容应用于我的主题时,什么都没有显示。甚至不在记忆中。甚至没有搜索 exception.log 或 system.log

    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="header.panel">
            <block class="Magento\Framework\View\Element\Html\Links" name="header.links">
                <arguments>
                    <argument name="css_class" xsi:type="string">header links</argument>
                </arguments>
            </block>
        </referenceContainer>
<referenceBlock name="socialimg1">
    <block class="Magento\Cms\Block\Block" name="socialimg">
        <arguments>
          <argument name="block_id" xsi:type="string">socialimg</argument>
        </arguments>
    </block>
</referenceBlock>
        <referenceBlock name="logo">
            <arguments>
                <argument name="logo_img_width" xsi:type="number">148</argument>
                <argument name="logo_img_height" xsi:type="number">43</argument>
            </arguments>
        </referenceBlock>
        <referenceContainer name="footer">
            <block class="Magento\Store\Block\Switcher" name="store_switcher" as="store_switcher" after="footer_links" template="switch/stores.phtml"/>
        </referenceContainer>
        <referenceBlock name="report.bugs" remove="true"/>
        <move element="copyright" destination="before.body.end"/>
    </body>
</page>
于 2016-07-03T21:48:20.633 回答
0

使用以下代码在 CMS 页面中显示静态块 -

{{block class="Magento\\Cms\\Block\\Block" block_id="block_identifier"}}

使用以下代码在 phtml 文件中显示静态块 -

<?php echo $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('block_identifier')->toHtml();?>
于 2016-06-27T08:56:51.273 回答