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

时间:2017-07-27 16:46:17

标签: php magento caching layout magento-1.9

Magento有一个名为Layouts Cache的缓存(见附图)

enter image description here 我有2个主题A和B,我启用了模块X.在主题A中,我在layouts文件夹中有X.xml,它引用了shipping方法的根,并像这样更改模板

<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并且送货方法没有显示任何内容,我在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 个答案:

答案 0 :(得分:0)

最后发现那是因为有人将setCacheKey用于布局文件中的特定值