magento - 检索给定类别ID的所有子类别

时间:2012-03-21 13:53:29

标签: php magento magento-1.4 magento-1.5

正如标题中所说,我正试图通过我的自定义功能来完成这些工作:

public function retrieveAllChilds($id = null, $childs = null){

        $childIdsArray = is_null($childs) ? array() : $childs;
        $category = is_null($id) ? $this->getCurrentCategory() : $this->getCategoryFromId($id);
        if (count($this->getChildrenCategories($id)) > 0) {
            $c = count($this->getChildrenCategories($id));
            $tmp_array = array();
            foreach ($this->getChildrenCategories($id) as $category) {
                array_push($tmp_array, $category->getId());             
            }
            $childIdsArray = array_merge($childIdsArray, $tmp_array);
            foreach ($this->getChildrenCategories($id) as $category){
                $this->retrieveAllChilds($category->getId(), $childIdsArray);
            }
        }
        else{
            return array_unique($childIdsArray);
        }

        return array_unique($childIdsArray);
}

但似乎在停止或退出条件下出现了问题。该函数正确检索前16个元素。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:7)

我认为课程Mage_Catalog_Model_Category已经包含了您正在搜索的功能。它被称为getChildren

public function retrieveAllChilds($id = null, $childs = null) {
    $category = Mage::getModel('catalog/category')->load($id);
    return $category->getChildren();
}

函数getChildren返回以逗号分隔的子ID,getChildrenCategories返回Mage_Catalog_Model_Category个实例的数组。

如果您想以递归方式获取子类别,可以使用:

public function retrieveAllChilds($id = null, $childs = null) {
    $category = Mage::getModel('catalog/category')->load($id);
    return $category->getResource()->getChildren($category, true);
}