Magento 布局缓存正在保存错误的模板名称

Posted

技术标签:

【中文标题】Magento 布局缓存正在保存错误的模板名称【英文标题】:Magento Layout Cache is saving the wrong template name 【发布时间】:2018-01-03 12:40:11 【问题描述】:

Magento 有这个缓存叫做布局缓存(见附图)

我有 2 个主题 A 和 B,我启用了模块 X。在主题 A 中,我在 layouts 文件夹中有 X.xml,它引用运输方法的根目录并像这样更改模板

<checkout_onepage_shippingmethod>
    <reference name='root'>
        <action method='setTemplate' ifconfig="X/X_config/enabled"><template>magentomod/X/checkout/onepage/shipping_method/available.phtml</template></action>
    </reference>
</checkout_onepage_shippingmethod>

主题B没有那个布局文件,所以它使用旧模板,我清除了所有缓存,开始测试主题A,来到发货方式,一切正常,但后来我切换到主题B并shipping method 什么也没显示,我在app/code/core/Mage/Core/Block/Template.php 里面查看,发现 checkout_onepage_shippingmethod 的模板名称设置为magentomod/X/checkout/onepage/shipping_method/available.phtml,这是主题 A 中为 X 模块设置的自定义模板,但我没有在主题 B 中设置它,所以这个模板名肯定已经被上面的magento缓存缓存过了。我尝试清除缓存,B 将按应有的方式工作。但是我找不到禁用这种行为的方法,我也尝试在布局文件中添加禁用缓存,但它仍然不能阻止它这样做,并且在 X 布局中还有其他几个块正在以这种方式设置模板但我对那些其他块没有问题。

【问题讨论】:

【参考方案1】:

终于发现是因为有人在布局文件中使用了 setCacheKey 到特定值

【讨论】:

以上是关于Magento 布局缓存正在保存错误的模板名称的主要内容,如果未能解决你的问题,请参考以下文章

电子邮件模板Magento不起作用

Magento 可以在缓存键中使用会话变量吗?

Magento 2 模板文件夹中的 PHP 代码给出语法错误

Magento 我的帐户布局 XML 问题

无法阻止 Magento 缓存块

如何安装Magento模板