我制作了一个小脚本,可以在产品页面上循环产品所属的所有类别。像这样:
我的问题是所有类别都显示在一个大列表中,而它们都来自一定数量的顶级类别。例如,对于显示的图片,所有类别都来自allergenen
intoleranties
和voedingsstijlen
。客户看不到这一点。
我想拆分列表并显示子类别属于的顶级类别:
所以我想我首先需要从类别中获取所有parentids然后使用那些我需要获取所有顶级类别名称,循环它们,并在该循环内循环子类别的ID。
我如何在magento结构化代码中执行此操作? 第一个图像显示为以下代码:
<?php
// Haal alle categorieen op waar het product onder valt
$currentCatIds = $_product->getCategoryIds();
$categoryCollection = Mage::getResourceModel('catalog/category_collection')
->addAttributeToSelect('name')
->addAttributeToSelect('url')
->addAttributeToFilter('entity_id', $currentCatIds)
->addIsActiveFilter();
$sorted = sort($categoryCollection);
$catlist .= '<ul class="categorielijst">';
foreach ($categoryCollection as $cat) {
if ($cat->getName() != 'Root') {
$catlist .= '
<li><a href="' . $cat->getUrl() . '">' . $cat->getName() . '</a></li>';
}
}
$catlist .= '</ul>';
echo $catlist;
?>
答案 0 :(得分:0)
$categoryCollection = Mage::getResourceModel('catalog/category_collection')
->addFieldToFilter('level',2)
->addAttributeToSelect('name')
->addAttributeToSelect('url');
$out = "<ul>";
foreach($categoryCollection as $cat){
$children = $cat->getChildren();
$out .= "<li>";
$out .= "<a href='".$cat->getUrl()."'>".$cat->getName()."</a>";
$out .="<ul class='sub'>";
foreach($children as $child){
$ChildModel = Mage::getModel('catalog/category')->load($child);
$out .="<li><a href='".$ChildModel->getUrl()."'>".$ChildModel->getName()."</a></li>";
}
$out .="</ul>";
$out .= "</li>";
}
$out .= "</ul>";
echo $out;