在Magento

时间:2017-09-01 08:57:56

标签: php loops magento magento-1.9

我制作了一个小脚本,可以在产品页面上循环产品所属的所有类别。像这样:

enter image description here

我的问题是所有类别都显示在一个大列表中,而它们都来自一定数量的顶级类别。例如,对于显示的图片,所有类别都来自allergenen intolerantiesvoedingsstijlen。客户看不到这一点。

我想拆分列表并显示子类别属于的顶级类别:

enter image description here

所以我想我首先需要从类别中获取所有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;
?>

1 个答案:

答案 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;