Magento Top Menu突然停止写入“Active”类

时间:2012-05-09 09:47:17

标签: css magento php

我遇到了一个奇怪的问题,magento似乎已停止将Active和Active父类写入我的菜单。

我一直在使用默认的Magento菜单,它已经工作了一个月左右。我已清除缓存并重新编制了类别和产品的索引。

任何建议都赞赏..这可能是文件存在问题吗?

3 个答案:

答案 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,其中显示了正在缓存的块(以及整个块)加载其他有用的块信息)。