私はmagento 2テーマを作成しています。cmsのホームページにカスタムブロックを表示したいです。
phtml と xml レイアウト、cms ページのコンテンツで静的ブロックを表示する方法を知りたい
どのようにできるのか?
以下のコードを使用してみてください。
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>
上記は正しいです。さらに、ホームページのxmlファイルはフォルダーcms_index_index.xml
内にあります(これは、またはMagento_Cms
ではなく、独自のパッケージ/テーマフォルダーに配置する必要があります)。Magento/blank
app/code
上記の xml コード<body>
をそのファイルのタグ内に配置するだけです。キャッシュ設定によっては、調整を確認するためにそれらをクリアする必要がある場合があります。
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>
次のコードを使用して、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();?>