我试图用
中的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文件。
当禁用模块然后执行默认文件并阻止。
但是当我从配置中禁用模块时,默认文件和块不会执行。
请帮助我解决这个问题
提前致谢。
答案 0 :(得分:3)
如果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>