Search code examples
phpmagentomagento2

How to render an enabled CMS block in phtml file in magento 2?


Pretty much what the title says. I want to add the google map in a cms block and then call it in a form.phtml for Contact Page. How do I do it?


Solution

  • To render an enabled CMS block in a phtml file in Magento 2, you can use the following code:

    <?php
    $blockId = 'your_block_identifier'; // Replace with your block identifier
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $block = $objectManager->create('Magento\Cms\Block\Block')->setBlockId($blockId);
    if ($block->getIsActive()) {
        echo $block->toHtml();
    }
    ?>
    

    Here's a breakdown of the code:

    Define the identifier of the CMS block you want to render. This can be found in the CMS block list in the Magento admin panel.

    $blockId = 'your_block_identifier';
    

    Create an instance of the CMS block using the ObjectManager

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $block = $objectManager->create('Magento\Cms\Block\Block')->setBlockId($blockId);
    

    Check if the block is active (enabled)

    if ($block->getIsActive()) {
    

    If the block is active, render the block's HTML using the toHtml() method.

    echo $block->toHtml();
    

    Note that using the ObjectManager directly is not best practice, and it is recommended to use dependency injection instead. Additionally, you should make sure to sanitize the $blockId input to avoid security vulnerabilities.