Magento 2 – How to Add a Static Block on All Pages

cms-pageslayoutmagento2static-block

I want to add a static block on the left side of all pages.

Can anyone tell me how to do that?

Best Answer

First of all, override the 2columns-left.xml in your theme module and define every page's column layout as 2column-left from XML and cms pages. Than put following code in your 2columns-left.xml file

<referenceContainer name="columns">
    <container name="div.sidebar.main" htmlTag="div" htmlClass="sidebar sidebar-main" after="main">
    <container name="sidebar.main" as="sidebar_main" label="Sidebar Main"/>
       <block class="Magento\Cms\Block\Block" name="blockname">
         <arguments>
            <argument name="block_id" xsi:type="string">cmsblock-identifier</argument>
         </arguments>
       </block>
    </container>
    <container name="div.sidebar.additional" htmlTag="div" htmlClass="sidebar sidebar-additional" after="div.sidebar.main">
        <container name="sidebar.additional" as="sidebar_additional" label="Sidebar Additional"/>
    </container>
</referenceContainer>

Above code will display your static block in the left side of your every 2columns-left style page.

The code to add cms block is:

       <block class="Magento\Cms\Block\Block" name="blockname">
            <arguments>
                <argument name="block_id" xsi:type="string">cmsblock-identifier</argument>
            </arguments>
       </block>