2017-11-11 290 views
1

我试图从Magento的2:我想补充的ifconfig在覆盖块XML

供应商\ Magento的\模块结账\图\前端覆盖使用PHTML文件块\ 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文件。

当禁用模块,然后执行默认文件和块。

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

请帮我解决这个问题

在此先感谢。

回答

0

如果配置将只显示模板,当它的值为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> 
+0

感谢重播 它的工作对我来说 –