我遇到了一个奇怪的问题,magento 似乎已经停止将 Active 和 Active 父类写入我的菜单。
我一直在使用默认的 Magento 菜单,它已经运行了一个月左右。我已清除缓存并重新索引类别和产品。
任何建议表示赞赏..这可能是文件权限问题吗?
对我来说,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>
遵循 Benmarks 的建议,禁用块 Html 缓存,并且再次编写活动类。
Magento 的 HTML 块缓存是一个相当奇怪的野兽。他们只启用了几个块来使用它,其中之一是顶部菜单(模板文件因您使用的 Magento 版本而异)。
如果你想保持块缓存并摆脱这个错误,那么你可以创建一个具有新块类型的模块
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),
));
这会将缓存时间设置为空,即禁用它。
然后,在您的布局文件中,您需要找到(在page.xml
)导航栏。它将具有以下标签:
<block type="catalog/navigation"...
您需要将其替换为您自己的模块的导航块类:
<block type="mycompany/navigation"
刷新你的缓存,你应该会发现你的类行为正常。有关 Magento 布局的更多信息,我真的推荐 Alan Storm 的优秀书籍“No Frills Magento Layout”,对于 Magento 调试工具的一个很好的补充,请查看这个模块,它向您显示哪些块正在被缓存(以及整个负载其他有用的块信息)。