Magento跟获取分类遍历分类相关的代码段

<?php
/*
 * @date 2015年1月5日
 * 获取分类的父分类和子分类
 **/
$currentCat = Mage::registry('current_category');
//echo $currentCat->getName();
//如果是根目录则显示当前目录
if ($currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId()) {
    //当前目录名
    $parentCate = $this->getCurrentCategory()->getName();
} else {
    //当前目录的父分类名
    $parentCate = $this->getCurrentCategory()->getParentCategory()->getName();
}
//显示的子分类可以根据当前的父分类的基础上
if ($currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId()) {
    //当前分类是顶级分类
    $loadCategory = $currentCat;
} else {
    //当前分类是顶级分类的的一个子分类,载入当前分类的父分类
    $loadCategory = Mage::getModel('catalog/category')->load($currentCat->getParentId());
}
$subCategories = explode(',', $loadCategory->getChildren());
/*foreach ( $subCategories as $subCategoryId ) {
    $cat = Mage::getModel('catalog/category')->load($subCategoryId);
    if($cat->getIsActive()) {
        echo '<a href="<?php echo $this->getCategoryUrl($cat) ?>">'.$cat->getName().'</a>';
    }
}*/
?>

<?php
/*获取所有分类的数据*/
$storeId = Mage::app()->getStore()->getStoreId();// Gets the current store's id
$category_collection = Mage::getModel('catalog/category')->getCollection()
    ->setStoreId($storeId)
    ->addAttributeToSelect('name')
    ->addAttributeToSelect('is_active');
$arr = array();
foreach ($category_collection as $key => $category) {
    if ($category->getLevel() <= 1) {
        continue;
    }
    $arr[$key]['level'] = $category->getLevel();
    $arr[$key]['parent_id'] = $category->getParentId();
    $arr[$key]['name'] = $category->getName();
    $arr[$key]['id'] = $category->getId();
    $arr[$key]['url'] = $category->getUrl();
    $arr[$key]['is_active'] = $category->getIsActive();
    $arr[$key]['position'] = $category->getPosition();
}
$arr2 = array();
foreach ($arr as $value) {
    if ($value['level'] == 3) {
        $arr2[] = $value;
    }
}
foreach ($arr as $key => $value) {
    foreach ($arr2 as $val) {
        if ($value['id'] == $val['parent_id']) {
            $arr[$key]['children'][] = $val;
        }
    }
}
foreach ($arr as $k => $v) {
    if ($v['parent_id'] != 2) {
        unset($arr[$k]);
    }
    //从全部的分类中,去除当前选中的分类项
    /* if($v['name'] == $parentCate){
         unset($arr[$k]);
     }*/
}
$arr = multi_array_sort($arr, 'position');
?>
/**
 * 对二维数组按某个索引值排序
 *
 * @param $multi_array 二维数组
 * @param $sort_key    索引值
 * @param int $sort
 * @return array|bool
 */
function multi_array_sort($multi_array, $sort_key, $sort = SORT_ASC)
{
    if (is_array($multi_array)) {
        foreach ($multi_array as $row_array) {
            if (is_array($row_array)) {
                $key_array[] = $row_array[$sort_key];
            } else {
                return false;
            }
        }
    } else {
        return false;
    }
    array_multisort($key_array, $sort, $multi_array);
    return $multi_array;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值