नॉकआउट टेम्पलेट फ़ाइल में स्थिर ब्लॉक कैसे कॉल करें?


12

मैं Magento 2.1 का उपयोग कर रहा हूँ।

चेकआउट पृष्ठ पर शिपिंग विधि के लिए कुछ कस्टम शिपिंग संदेश दिखाना चाहते हैं, मैंने इसे नॉकआउट टेम्पलेट फ़ाइल में सीधे संपादित करके किया है।

Magento_Checkout / वेब / टेम्पलेट / shipping.html

लेकिन मैं बैकएंड पर यह सेटिंग चाहता हूं। तो, नॉकआउट टेम्पलेट फ़ाइल में एक स्थिर ब्लॉक को कॉल करना संभव है, यदि हां, तो मैं यह कैसे कर सकता हूं।

मैं चाहता हूं कि रेड बॉक्स में प्रतियोगी स्टैटिक ब्लॉक आए।

यहाँ छवि विवरण दर्ज करें

जवाबों:


22

आप एक मॉड्यूल बना सकते हैं जो चेकआउट कॉन्फिग में जोड़कर आपके सेमी ब्लॉक संदेश को केओ टेम्पलेट को उपलब्ध कराएगा।

Your/Module/etc/frontend/di.xmlचेकआउट कॉन्फिग में हम एक नया कॉन्फिगर प्रोवाइडर जोड़ते हैं:

<?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">Your\Module\Model\ConfigProvider</item>
            </argument>
        </arguments>
    </type>
</config>

में Your/Module/Model/ConfigProvider.phpहम कोड है कि सेमी ब्लॉक के एचटीएमएल को हासिल करेगा है:

<?php

namespace Your\Module\Model;


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

class ConfigProvider implements ConfigProviderInterface
{
    /** @var LayoutInterface  */
    protected $_layout;

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

    public function getConfig()
    {
        $cmsBlockId = 1; // id of cms block to use

        return [
            'cms_block_message' => $this->_layout->createBlock('Magento\Cms\Block\Block')->setBlockId($cmsBlockId)->toHtml()
        ];
    }
}

अब आपको अपनी थीम में शिपिंग.html कोओ टेम्पलेट को अधिलेखित करना चाहिए जहां आप सेमी ब्लॉक प्रदर्शित कर सकते हैं:

<div data-bind="html: window.checkoutConfig.cms_block_message"></div>

नोट: यदि आप HTML टैग्स का उपयोग करना चाहते हैं जिसमें दोहरे उद्धरण शामिल हैं (उदाहरण के लिए एक html एक टैग) तो स्थिर खंड में आपको बैकस्लैश के साथ दोहरे उद्धरणों से बचना चाहिए। उदाहरण के लिए:

Accept our <a target=\"_blank\" href=\"/privacy-policy\">privacy policy</a>

क्या मैं मिनिकार्ट content.html में CMS ब्लॉक को जोड़ने के लिए भी ऐसा कर सकता हूं?
रौनक चौहान

Minicart के लिए आप के लिए एक प्लग इन करने की आवश्यकता होगी getConfigकी विधि \Magento\Checkout\Block\Cart\Sidebar। यह विधि एक सरणी लौटाती है जिसे तब window.checkoutवस्तु के रूप में जावास्क्रिप्ट में पारित किया जाता है (यह इसमें होता है Magento/Checkout/view/frontend/templates/cart/minicart.phtml)।
आरोन एलन

@AaronAllen, यह इस पोस्ट के लिए धन्यवाद काम कर रहा है।
सरफराज सिपाई

क्या कोई कह सकता है कि यह काम करेगा 2.3.3 के लिए जैसा कि मैं cms स्थिर ब्लॉक सामग्री प्रदर्शित नहीं करता? @ सरफराज सिपाई
हेर्रीज

-4

मुझे लगता है कि आप उस स्थिर ब्लॉक इन .html फ़ाइल को नहीं कह सकते, जिसे आपको उस स्थिर ब्लॉक कोड को phtml फ़ाइल में जोड़ना है

नीचे दिए गए पथ का प्रयास करें

Magento_Checkout/view/frontend/templates/onepage.phtml 

नीचे दिए गए कोड बनाए रखने की कोशिश आओ css हैक्स द्वारा

you have to change **static-block-id**


<div class ="static block" style="bottom: 127px; position: absolute;">
<?php   echo $this->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('static-block-id')->toHtml();   ?>
</div>

यह अस्थायी समाधान हो सकता है कि आपको कुछ अन्य अच्छे उत्तर मिलेंगे

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.