Important
You are browsing upcoming documentation for version 7.0 of OroCommerce, scheduled for release in 2026. Read the documentation for the latest LTS version to get up-to-date information.
See our Release Process documentation for more information on the currently supported and upcoming releases.
Content Blocks
An administrator can modify a predefined marketing content in the frontend by editing the defined content blocks.
The ContentBlock entity fields consist of:
| alias | A unique identifier that can be used in the layout to render a block. | 
| scopes | A collection of scopes that defines the conditions for the content block to be displayed. For more information, refer to the ScopeBundle documentation. | 
| titles | A localized block title that can be rendered along with the scope. | 
| contentVariants | A collection of the TextContentVariant entities. Each content variant has a scope that defines when it should be rendered. Only one content variant with the most suitable scope is rendered at a time. If there is no suitable content variant, the default one is rendered instead. | 
Manage Content Blocks
An administrator can edit the defined content blocks in the Marketing > Content Blocks menu.
Create a Content Block
You can create content blocks with a collection of predefined content variants using data migrations:
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Persistence\ObjectManager;
use Oro\Bundle\CMSBundle\Entity\ContentBlock;
use Oro\Bundle\CMSBundle\Entity\TextContentVariant;
use Oro\Bundle\LocaleBundle\Entity\LocalizedFallbackValue;
class LoadHomePageSlider extends AbstractFixture
{
    public function load(ObjectManager $manager)
    {
        $slider = new ContentBlock();
        $slider->setAlias('marketing-block');
        $title = new LocalizedFallbackValue();
        $title->setString('Block title');
        $slider->addTitle($title);
        $variant = new TextContentVariant();
        $variant->setDefault(true);
        $variant->setContent('<p>Block content</p>');
        $slider->addContentVariant($variant);
        $manager->persist($slider);
        $manager->flush($slider);
    }
}
Render a Content Block in the Layout
Content blocks can be rendered by unique aliases using the content_block block type:
layout:
    actions:
        - '@add':
            id: marketing_block # unique layout block id
            parentId: page_content
            blockType: content_block
            options:
                alias: marketing-block # unique content block id
Note
An administrator can rename or delete defined content blocks. So if there is no content block with a defined alias, this may be caused by a typo in a block name or non-existence of the block itself, nothing is rendered, and no errors are displayed. A notice message is written to log.
If you have rendered a content block to the layout but nothing is displayed, check whether:
- The content block is enabled 
- The content block has at least one suitable scope or has no scope at all, which means the block is rendered without any restriction.