这是我的类别树:

-Default Category
--Top Cat 1
---sub cat 1
----sub sub cat 1
----sub sub cat 2
----sub sub cat 3
---sub cat 2
---sub cat 3
--Top Cat 2
---sub cat 1
---sub cat 2
---sub cat 3
--Top Cat 3
---sub cat 1
---sub cat 2
---sub cat 3

问题是我需要在3个顶级类别上显示不同的内容和侧边栏。我该如何实现?

有帮助吗?

解决方案

每个类别的部分称为“自定义设计”。从该部分中,您可以为类别选择一个不同的主题,添加自定义布局更新语句,然后选择页面的布局(1column,3columns,...)。您可以创建一个不同的主题,仅包含您需要更改类别的文件,并将其用于3个顶级类别。

另外,在“显示设置”部分中,您可以选择“显示模式”“静态块”,如果您不需要列出的产品(或“静态块和产品”,如果您想要静态内容和产品)并创建一个带有您想要的内容和设计的静态块,并将其用于类别。每个类别的一个块。

其他提示

理想情况下,您将设置一个事件观察者,并在类似 添加的特定于ID的手柄(链接). 。不幸的是,在最早的 目标 将覆盖此手柄中的任何模板设置的事件。但是,您当然可以使用 动态分配事件 controller_action_layout_render_before_catalog_category_view (关联). 。这是一个非常晚的游戏事件,但保证您的模板更改将是最重要的。因为类别查看操作(间接)注册了查看类别,所以执行操作很容易:

public function applyCategoryLevelTemplate()
{
    $category = Mage::registry('current_category');
    //ref https://github.com/benmarks/magento-mirror/blob/1.7.0.2/app/code/core/Mage/Catalog/controllers/CategoryController.php#L57

    $categoryViewBlock = Mage::app()->getLayout()->getBlock('category.products');
    //ref https://github.com/benmarks/magento-mirror/blob/1.7.0.2/app/design/frontend/base/default/layout/catalog.xml#L79
    //of course, pick the appropriate block(s) by name

    if ($categoryViewBlock && $category->getLevel() == 2) {
        $categoryViewBlock->setTemplate(/* e.g.custom_top_template.phtml */);
    }
}

答案可能已经在这里: 如何根据代码的类别级别更改类别页面的模板?

使用以下方式:

$this->getCurrentCategory()->getLevel()

我可以获得类别的水平,我看到我所有的顶级猫都有2级,现在我可以循环浏览我需要显示的内容

许可以下: CC-BY-SA归因
scroll top