23

Both referenceBlock and referenceContainer entities are used in layout in magento2.
What is the main difference between them and how can I relate these entities to magento1.*.

1 Answer 1

42

basically containers are the equivalent of the core/text_list blocks in magento 1.
"philosophically" they work the same, the only difference is that containers are predefined blocks that only support other child blocks.
Some examples are content, after.body.start, header-wrapper.
You can see all defined containers for example in the Magento/Theme/view/base/page_layout/*.

Here is an example from empty.xml.

<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_layout.xsd">
    <container name="root">
        <container name="after.body.start" as="after.body.start" before="-" label="Page Top"/>
        <container name="page.wrapper" as="page_wrapper" htmlTag="div" htmlClass="page-wrapper">
            <container name="global.notices" as="global_notices" before="-"/>
            <container name="main.content" htmlTag="main" htmlId="maincontent" htmlClass="page-main">
                <container name="columns.top" label="Before Main Columns"/>
                <container name="columns" htmlTag="div" htmlClass="columns">
                    <container name="main" label="Main Content Container" htmlTag="div" htmlClass="column main"/>
                </container>
            </container>
            <container name="page.bottom" as="page_bottom" label="Before Page Footer Container" after="main.content" htmlTag="div" htmlClass="page-bottom"/>
            <container name="before.body.end" as="before_body_end" after="-" label="Page Bottom"/>
        </container>
    </container>
</layout>

basically what's defined as <container name="..." /> can be accessed by referenceContainer. what's declared as <block .... /> can be referenced by referenceBlock

1
  • I want to add a custom static cms block under the price on PDP page, the alignment not properly set. Workout : code - justpaste.it/35xpq path (custom theme) - app/design/frontend/Codazon/fastest/grocery_gourmet/Magento_Catalog/layout/catalog_product_view.xml
    – zus
    Commented Oct 20, 2020 at 9:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.