Nakavt şablon dosyasında statik blok nasıl çağrılabilir?


12

Magento 2.1 kullanıyorum.

Ödeme sayfasında gönderim yöntemi için bazı özel gönderim mesajlarını göstermek istiyorum, doğrudan nakavt şablon dosyasına düzenleyerek yaptım.

Magento_Checkout / web / şablon / shipping.html

ama bu ayarı arka uçta istiyorum. Yani, nakavt şablon dosyasında statik bir blok çağırmak mümkündür, evet ise, nasıl yapabilirim.

Kırmızı kutudaki sabitin statik bloktan gelmesini istiyorum.

resim açıklamasını buraya girin

Yanıtlar:


22

Ödeme yapılandırmasına ekleyerek cms blok mesajınızı KO şablonu için kullanılabilir hale getirecek bir modül oluşturabilirsiniz.

Gelen Your/Module/etc/frontend/di.xmlbiz ödeme yapılandırma için yeni bir yapılandırma sağlayıcı ekleyin:

<?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>

İçinde Your/Module/Model/ConfigProvider.phpcms blok html getiren kodu var:

<?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()
        ];
    }
}

Şimdi temanızdaki cms bloğunu şu şekilde görüntüleyebileceğiniz shipping.html KO şablonunun üzerine yazmalısınız:

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

Not: statik blokta çift tırnak (örneğin bir html etiketi) içeren html etiketlerini kullanmak istiyorsanız, çift eğik çizgiden ters eğik çizgiden kaçmanız gerekir. Örneğin:

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

CMS bloğunu minicart content.html dosyasına eklemek için de aynısını yapabilir miyim?
Ronak Chauhan

Miniart için getConfigyöntemi için bir eklenti yapmanız gerekecektir \Magento\Checkout\Block\Cart\Sidebar. Bu yöntem, window.checkoutnesne olarak javascript'e geçirilen bir dizi döndürür (bu, içinde oluşur Magento/Checkout/view/frontend/templates/cart/minicart.phtml).
Aaron Allen

@AaronAllen, bu yazı için teşekkürler.
Sarfaraj Sipai

Herkes görüntülenen cms statik blok içeriği görmüyor gibi bu 2.3.3 için çalışacağını söyleyebilir miyim? @Sarfaraj Sipai
Haerriz

-4

Sanırım .html dosyasında statik blok çağıramazsınız, o statik blok kodunu phtml dosyasına eklemeniz gerekir

Aşağıdaki yolu deneyin

Magento_Checkout/view/frontend/templates/onepage.phtml 

aşağıdaki kodu eklemeyi deneyin gel css kesmek tarafından korumak

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>

Bu geçici çözümler olabilir bazı diğer iyi Cevaplar alacak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.