Bagaimana cara memanggil blok statis dalam file templat knockout?


12

Saya Menggunakan Magento 2.1.

Ingin menunjukkan beberapa pesan pengiriman khusus untuk metode pengiriman pada halaman checkout, saya telah melakukannya dengan mengedit langsung ke file templat KO.

Magento_Checkout / web / template / shipping.html

tapi saya ingin pengaturan ini di backend. Jadi, adalah mungkin untuk memanggil blok statis di file templat knockout, jika ya, bagaimana saya bisa melakukannya.

Saya ingin contant di kotak merah datang bentuk blok statis.

masukkan deskripsi gambar di sini

Jawaban:


22

Anda dapat membuat modul yang akan membuat pesan blok cms Anda tersedia untuk templat KO dengan menambahkan ke checkout checkout.

Di Your/Module/etc/frontend/di.xmlkami menambahkan penyedia konfigurasi baru ke checkout checkout:

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

Di Your/Module/Model/ConfigProvider.phpkami memiliki kode yang mengambil html blok cms:

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

Sekarang Anda harus menimpa template KO shipping.html dalam tema Anda di mana Anda dapat menampilkan blok cms seperti:

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

Catatan: jika Anda ingin menggunakan tag html yang berisi kutipan ganda (misalnya tag html a) di blok statis Anda harus menghindari kutip ganda dengan backslash. Sebagai contoh:

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

Dapatkah saya melakukan hal yang sama untuk menambahkan blok CMS ke minicart content.html?
Ronak Chauhan

Untuk minicart Anda perlu membuat plugin untuk getConfigmetode \Magento\Checkout\Block\Cart\Sidebar. Metode ini mengembalikan array yang kemudian diteruskan ke javascript sebagai window.checkoutobjek (ini terjadi di Magento/Checkout/view/frontend/templates/cart/minicart.phtml).
Aaron Allen

@AaronAllen, itu berfungsi, terima kasih atas pos ini.
Sarfaraj Sipai

Adakah yang bisa mengatakan ini akan berfungsi untuk 2.3.3 karena saya tidak melihat konten blok statis cms ditampilkan? @Sarfaraj Sipai
Haerriz

-4

Saya pikir Anda tidak dapat memanggil blok statis dalam file .html Anda harus menambahkan kode blok statis dalam file phtml

Coba jalur di bawah ini

Magento_Checkout/view/frontend/templates/onepage.phtml 

coba tambahkan kode di bawah ini dengan tetap menggunakan hacks 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>

Ini adalah solusi sementara mungkin Anda akan mendapatkan beberapa Jawaban baik lainnya

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.