在一个magento网站上,我们有一个菜单,我们希望始终显示父节点下的所有产品,假设我们有
根
-类别1
-类别2
----子类别2-1
----子类别2-2
单击类别2时,我们希望看到分配到类别2、2-1和2-2的所有产品。当点击Root时,它应该显示商店的所有产品。但是,当从商店的其他部分中选择category1时,我们希望有一个默认行为。
通常,我们只会将产品分为不同的类别,但由于我们只希望在网站的一个部分出现这种行为,我不知道如何处理。
有什么想法吗?
提前谢谢。
您可以使用类别的"Anchor"属性来实现这一点,此设置控制Magento如何从其应用的类别以下的类别中"汇总"产品,并在这样做的过程中设置分层导航控件的范围(如果您正在使用它们)。
要按照描述工作,您需要在父类别下的每个子类别上适当地勾选/取消勾选"是锚点"框。
转到目录>管理类别>选择类别>显示设置>是否为锚点?(勾选)
为了获得你想要的行为,你需要设置"是锚"框,如下所示:
Root - tick
- category 1 - untick
- category 2 - tick
-- foreach child of category 2 - tick
然后重新索引任何与类别相关的内容。
显示顶级和所有子类别:
$collection= Mage::helper('catalog/category');
$categories = $collection->getStoreCategories();
$currentCategory = Mage::registry('current_category');
<ul>
<?php foreach($categories as $category): ?>
<li><a href="<?php echo $collection->getCategoryUrl($category) ?>">
<?php echo $category->getName() ?>
</a>
<?php $category = Mage::getModel('catalog/category')->load($category->getId()) ?>
<?php $subCategory = $category->getChildrenCategories() ?>
<?php if(count($subCategory > 0)): ?>
<ul>
<?php foreach($subCategory as $_subCategory):) ?>
<li>
<a href="<?php echo $collection->getCategoryUrl($_subCategory) ?>">
<?php echo $_subCategory->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>