进入子类别时,Magento'失去'类别

时间:2010-11-21 11:07:02

标签: magento parent categories

好吧,所以我和Magento一起工作了大约1-2个月,对此并不太兴奋,但仍在努力学习。

我已经设法为某人安装了一个很好的模板主题,而我正在调整它以使其正常工作。

但是,我有一个奇怪的问题......首先,我的模板没有在顶部导航中显示根类别,只列出了第一个子类别。这很好。

我进入子类别,我可以在左侧块中看到子类别。但是当我点击其中一个子子类别时,左边的块根本不会显示任何类别。

我可以发现这是默认行为,因为我所在的子子类别没有子子类别。但是,我想知道,当你处于一个宏伟的类别时,有没有人知道一个好方法,以显示主要基地的所有类别?

EX:
Default Category (Not seen)
  Cat 1 (Shown in top nav)
    Sub Cat 1
    Sub Cat 2
  Cat 2 (Shown in top nav)
    Sub Cat 1
    Sub Cat 2
  Cat 3 (Shown in top nav)
    Sub Cat 1
    Sub Cat 2

比如说我点击Sub Cat 2,在Cat 3位置,我可以让magento显示来自第二级的所有孩子吗?在这个例子中,将显示Cat 3及其所有子类别,几乎就像我点击Cat 3一样。

我希望我解释得很好,我和Magento混淆了下一个人......

(这是在foreach循环之前用来在我的模板文件中写入类别的位。无论如何在这里抛出一个getParent()类型的交易,所以它总是加载'top'类别?)

<?php $_categories=$this->getCurrentChildCategories(); ?>

<?php $_count = is_array($_categories)?count($_categories):$_categories->count(); ?>

<?php if($_count): ?>

3 个答案:

答案 0 :(得分:2)

确定。我看了两个提供的答案,然而,他们都没有真正朝我看的方向前进。

他们两个人都很好,不过,我偶然发现了一些能给我提供更好线索的东西,并且我编写了这个狡猾的程序:

// Get the current category's path, in array.
// Ex: [0] => '20', [1] => '4'
$_categorypath = $this->getCurrentCategoryPath();

// Use Mage to get a requested Category from the category path from above.
// (The last int in the array is the top-most category, so size-1 gets last int id)
$_parent_category = Mage::getModel('catalog/category')->load($_categorypath[count($_categorypath)-1]);

// Call the children categories from the loaded category
$_categories=$_parent_category->getChildrenCategories();

// Follow the rest of the loop... Success! No "Current/Active" handler yet.. 
$_count = is_array($_categories)?count($_categories):$_categories->count();

if($_count):
// ( Run your foreach code here, complete with html formatting)

我希望这有助于未来的其他人,他们正在寻找类似的功能。

答案 1 :(得分:0)

有一个vertical navigation extension可以让您在显示的内容上有更多选择。它没有您描述的确切行为,但是朝着正确的方向迈出了一步,您可能会发现修改比完全提出自己的方法更容易。

答案 2 :(得分:0)

左侧类别块的想法是显示当前类别的子类别。听起来你想要一个更静态的菜单,它总是显示相同的类别树。这正是顶部导航所做的,因此您可以从那里复制代码,并将其用作左侧块。它甚至具有.active CSS类,因此您可以根据活动类别对其进行样式设置以折叠/展开子类别。