我遇到了一个奇怪的问题,magento似乎已停止将Active和Active父类写入我的菜单。
我一直在使用默认的Magento菜单,它已经工作了一个月左右。我已清除缓存并重新编制了类别和产品的索引。
任何建议都赞赏..这可能是文件存在问题吗?
答案 0 :(得分:3)
对我来说,我的local.xml中的这个xml更改解决了这个问题:
<default>
<reference name="catalog.topnav">
<action method="unsetData"><key>cache_lifetime</key></action>
<action method="unsetData"><key>cache_tags</key></action>
</reference>
</default>
答案 1 :(得分:0)
跟随Benmarks建议,禁用Block Html Caching并重新编写活动类。
答案 2 :(得分:0)
Magento的HTML Block缓存是一个相当奇怪的野兽。他们只启用了几个块来处理它,其中一个是顶层菜单(模板文件根据您使用的Magento版本而有所不同)。
如果你想保持阻止缓存并摆脱这个bug,那么你可以创建一个具有新块类型的模块
extends Mage_Catalog_Block_Navigation
并在块的_construct()
方法中设置以下数据:
$this->addData(array(
'cache_lifetime' => null,
'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Core_Model_Store_Group::CACHE_TAG),
));
这会将缓存时间设置为null,即禁用它。
然后,在您的布局文件中,您需要找到(在page.xml
中)导航栏。它将具有以下标记:
<block type="catalog/navigation"...
您需要使用自己的模块的导航块类替换:
<block type="mycompany/navigation"
刷新您的缓存,您应该发现您的课程表现正常。有关Magento布局的更多信息,我实际上推荐了Alan Storm的优秀书籍'No Frills Magento Layout',并且对于Magento调试工具的一个很好的补充,请查看this module,其中显示了正在缓存的块(以及整个块)加载其他有用的块信息)。