<?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;
}