Magento 2 || Create a custom static block using model php adding custom var on checkout config - mpaz-redstage/magento-snippets GitHub Wiki

src/app/code/Redstage/CheckoutStaticBlock/etc/frontend/di.xml:9

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Checkout\Model\CompositeConfigProvider">
        <arguments>
            <argument name="configProviders" xsi:type="array">
                <item name="cms_block_config_provider" xsi:type="object">Redstage\CheckoutStaticBlock\Model\ConfigProvider</item>
            </argument>
        </arguments>
    </type>

    <type name="Redstage\CheckoutStaticBlock\Model\ConfigProvider">
        <arguments>
            <argument name="blockId" xsi:type="string">checkout_disclaimer</argument>
        </arguments>
    </type>
</config>

src/app/code/Redstage/CheckoutStaticBlock/Model/ConfigProvider.php:18

<?php
/**
 * ConfigProvider
 *
 * @copyright Copyright © 2019 Redstage. All rights reserved.
 * @author    [email protected]
 */
namespace Redstage\CheckoutStaticBlock\Model;

use Magento\Checkout\Model\ConfigProviderInterface;
use Magento\Cms\Block\Block;
use Magento\Framework\View\LayoutInterface;

class ConfigProvider implements ConfigProviderInterface
{
    protected $_layout;
    protected $cmsBlock;

    public function __construct(LayoutInterface $layout, $blockId)
    {
        $this->_layout = $layout;
        $this->cmsBlock = $this->constructBlock($blockId);
    }

    public function constructBlock($blockId)
    {
        $block = $this->_layout->createBlock(Block::class)->setBlockId($blockId)->toHtml();
        return $block;
    }

    public function getConfig()
    {
        return ['custom_message' => $this->cmsBlock];
    }
}

src/app/code/Redstage/CheckoutStaticBlock/view/frontend/web/template/before-form.html:8

<!--
  ~ /**
  ~  Copyright © 2016 Magestore. All rights reserved.
  ~  See COPYING.txt for license details.
  ~  */
  -->

<li>
    <h1 class="checkout_header" data-bind="text: oneStepTitle"></h1>
    <p data-bind="html: window.checkoutConfig.custom_message"></p>
    <p class="subtitle" data-bind="text: oneStepDescription"></p>
</li>
<!-- ko if: !isLogin() -->
<li id='onestepcheckout_login_link' class="onestepcheckout-login-link" data-bind="visible: isShowLoginLink">
    <a href="javascript:void(0);" id="onestepcheckout-login-link"
       data-bind="text: loginLinkTitle, click: showLoginForm">
    </a>
</li>
<!-- /ko  -->

<!-- ko if: isLogin() -->
<li id='onestepcheckout_logout_link' class="onestepcheckout-login-link" data-bind="visible: isShowLoginLink">
    <a href="javascript:void(0);" id="onestepcheckout-logout-link"
       data-bind="i18n: 'Logout', click: logout">
    </a>
</li>
<!-- /ko  -->

src/app/code/Redstage/CheckoutStaticBlock/view/frontend/requirejs-config.js:11

/**
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */

var config = {
    map: {
        '*': {
            'Magestore_OneStepCheckout/template/before-form.html':
                'Redstage_CheckoutStaticBlock/template/before-form.html'
        }
    }
};
⚠️ **GitHub.com Fallback** ⚠️