답변:
결제 구성에 추가하여 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우리는 CMS 블록의 HTML을 가져 오는 코드를 가지고 :
<?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()
];
}
}
이제 cms 블록을 다음과 같이 표시 할 수있는 shipping.html KO 템플릿을 테마에 덮어 써야합니다.
<div data-bind="html: window.checkoutConfig.cms_block_message"></div>
참고 : 정적 블록에 큰 따옴표가 포함 된 html 태그 (예 : html 태그)를 사용하려면 큰 따옴표를 백 슬래시로 이스케이프 처리해야합니다. 예를 들면 다음과 같습니다.
Accept our <a target=\"_blank\" href=\"/privacy-policy\">privacy policy</a>
getConfig메소드에 플러그인을 만들어야합니다 \Magento\Checkout\Block\Cart\Sidebar. 이 메소드는 배열을 리턴 한 다음 window.checkout객체 로 javascript에 전달됩니다 (이에 서 발생 함 Magento/Checkout/view/frontend/templates/cart/minicart.phtml).
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>
이것은 임시 해결책입니다. 다른 좋은 답변을 얻을 수 있습니다.