我正在使用Magento 2.1。
想要在结帐页面上显示一些自定义运输消息以用于运输方法,我已经通过直接编辑到剔除模板文件来完成。
Magento_Checkout / web / template / shipping.html
但我想在后端使用此设置。因此,可以在敲除模板文件中调用静态块,如果可以,我该怎么做。
我希望红色框中的内容来自静态块。
我正在使用Magento 2.1。
想要在结帐页面上显示一些自定义运输消息以用于运输方法,我已经通过直接编辑到剔除模板文件来完成。
Magento_Checkout / web / template / shipping.html
但我想在后端使用此设置。因此,可以在敲除模板文件中调用静态块,如果可以,我该怎么做。
我希望红色框中的内容来自静态块。
Answers:
您可以创建一个模块,通过添加到checkout配置,使您的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()
];
}
}
现在,您应该覆盖主题中的shipping.html KO模板,您可以在其中显示cms块,如下所示:
<div data-bind="html: window.checkoutConfig.cms_block_message"></div>
注意:如果要在静态块中使用包含双引号的html标记(例如html a标记),则应使用反斜杠对双引号进行转义。例如:
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>
这是临时解决方案,可能您会得到一些其他好的答案