จะเรียกบล็อกคงที่ในไฟล์เทมเพลตที่น่าพิศวงได้อย่างไร?


12

ฉันใช้ Magento 2.1

ต้องการแสดงข้อความการจัดส่งแบบกำหนดเองสำหรับวิธีการจัดส่งในหน้าเช็คเอาต์ฉันได้ทำการแก้ไขโดยตรงไปยังไฟล์เทมเพลตที่น่าพิศวง

Magento_Checkout / เว็บ / แม่แบบ / shipping.html

แต่ฉันต้องการการตั้งค่านี้ในแบ็กเอนด์ ดังนั้นเป็นไปได้ที่จะเรียกบล็อกแบบคงที่ในไฟล์เทมเพลตที่น่าพิศวงถ้าใช่ฉันจะทำอย่างไร

ฉันต้องการให้ contant ในกล่องสีแดงมาเป็นบล็อกแบบคงที่

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


22

คุณสามารถสร้างโมดูลที่จะทำให้ข้อความบล็อก cms ของคุณพร้อมใช้งานกับแม่แบบ KO โดยเพิ่มการกำหนดค่าเช็คเอาต์

ใน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เรามีรหัสที่เรียก html ของบล็อก 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()
        ];
    }
}

ตอนนี้คุณควรเขียนทับเทมเพลต shipping.html KO ในชุดรูปแบบของคุณซึ่งคุณสามารถแสดงบล็อก cms ดังนี้:

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

หมายเหตุ: หากคุณต้องการใช้แท็ก html ที่มีการเสนอราคาแบบคู่ (เช่นแท็ก html) ในบล็อกแบบคงที่คุณควรหลีกเลี่ยงการเสนอราคาซ้ำด้วยแบ็กสแลช ตัวอย่างเช่น:

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

ฉันสามารถทำเช่นเดียวกันเพื่อผนวกบล็อก CMS เข้ากับ minicart content.html ได้หรือไม่
Ronak Chauhan

สำหรับ minicart ที่คุณจะต้องทำให้ปลั๊กอินสำหรับวิธีการของgetConfig \Magento\Checkout\Block\Cart\Sidebarวิธีการนี้จะส่งกลับอาร์เรย์ที่ถูกส่งผ่านไปยังจาวาสคริปต์เป็นwindow.checkoutวัตถุ (ซึ่งเกิดขึ้นใน Magento/Checkout/view/frontend/templates/cart/minicart.phtml)
แอรอนอัลเลน

@AaronAllen มันทำงานได้ดีขอบคุณสำหรับโพสต์นี้
Sarfaraj Sipai

ใครสามารถพูดได้ว่าจะใช้งานได้กับ 2.3.3 เพราะฉันไม่เห็นเนื้อหาบล็อกคงที่ของ cms แสดงขึ้นมา? @Sarfaraj Sipai
Haerriz

-4

ฉันคิดว่าคุณไม่สามารถเรียกบล็อกคงที่ในไฟล์. html ที่คุณต้องเพิ่มรหัสบล็อกคงที่ในไฟล์ phtml

ลองเส้นทางด้านล่าง

Magento_Checkout/view/frontend/templates/onepage.phtml 

พยายามที่จะเพิ่มรหัสรักษาด้านล่างโดยมา CSS c hacks

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>

นี่เป็นวิธีแก้ปัญหาชั่วคราวที่คุณจะได้รับคำตอบที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.