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では、どのようにそれを達成できますか?

回答:


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>

参照名をどのようにして見つけましたか?
スティービーG

@StevieG 見つけるか、デフォルトのXML実装を読んで、すべてがどのように構築されているかを把握します(長期的に行うと非常に便利です)。
メルヴィン

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でも使用できますか?
プラーフルラージプート

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>

上記のブロックは、サイドバーのある2列で正常に機能しています。


こんにちは、カテゴリページレイアウトの静的ブロックのみを呼び出す場合 sidebar.additionalでxmlの静的ブロックを呼び出しましたが、機能していません。理由は何でしょうか?
ジャック

@Rakesh、<?php echo $ this-> getLayout()-> createBlock( 'Magento \ Cms \ Block \ Block')-> setBlockId( 'identiefier_id')-> toHtml(); ?>私はそのが機能していない、success.phtmlで使用
ジャファル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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.