首页 文章

Magento 2:我想在覆盖块xml中添加ifconfig

提问于
浏览
2

我试图用phtml文件覆盖块

供应商\的magento \模块结账\视图\前端\ success.phtml

到我的档案

应用\代码\定制\模块\视图\前端\结帐\ success.phtml

和xml文件是checkout_onepage_success.xml

<referenceBlock name="checkout.success">
       <action method="setTemplate" ifconfig="custom_general/general/active">
            <argument name="template" xsi:type="string">Custom_Module::checkout/success.phtml</argument>
        </action>
</referenceBlock>

当我从配置启用模块然后执行我的块和phtml文件 .

当禁用模块然后执行默认文件和阻止 .

但是当我从配置中禁用模块时,默认文件和块不会执行 .

请帮帮我解决这个问题

提前致谢 .

1 回答

  • 1

    如果config仅在值为true时显示模板,则它不能用作其他条件 .

    为了解决您的问题,我建议您创建一个辅助函数并在辅助方法中添加条件 .

    像这样的东西:

    <?php
    
    namespace Custom\Module\Helper;
    
    class Data extends \Magento\Framework\App\Helper\AbstractHelper
    {
        protected $_request;
    
        public function __construct
        (
            \Magento\Framework\App\Request\Http $request
        ) {
            $this->_request = $request;
        }
    
        public function getTemplate()
        {
            if ($this->_scopeConfig->isSetFlag('custom_general/general/active')) {
                $template =  'Custom_Module::checkout/success.phtml';
            } else {
                $template = 'Vendor_Module::checkout/success.phtml';
            }
    
            return $template;
        }
    }
    

    然后在布局中包含您的块而不是这个

    <referenceBlock name="checkout.success">
        <action method="setTemplate">
            <argument name="template" xsi:type="helper" helper="Custom\Module\Helper\Data::getTemplate"></argument>
        </action>
    </referenceBlock>
    

相关问题