有的时候我们要显示网页所有类别或Magento的任何CMS页面。有许多不同的方式来获得的类别列表。我会告诉你如何得到所有类别您的Magento店的名单。

1.显示所有的Magento分类列表(Active/Inactive)

下面的代码将获取在你的magento商店里面的所有分类:

$categories = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('*');

2. 显示所有激活的分类( Active Categories)

下面的代码将获取你的magento商店里的所有激活的分类,过滤掉没有激活的分类

$categories = Mage::getModel('catalog/category') ->getCollection() ->addAttributeToSelect('*') ->addIsActiveFilter(); 

3. 在magento中显示任意级别的并且是激活状态下的分类

下面代码将获取所有特定级别的激活分类,在这里我选择了一级分类,并按照分类的name排序

$categories = Mage::getModel('catalog/category') ->getCollection() ->addAttributeToSelect('*') ->addIsActiveFilter() ->addLevelFilter(1) ->addOrderField('name'); 

4. 在magento中显示特定分类存储类型

下面的代码将获取所有激活的的存储特定分类

getStoreCategories($sorted=false, $asCollection=false, $toLoad=true) 
$helper = Mage::helper('catalog/category'); 

// sorted by name, fetched as collection 
$categoriesCollection = $helper->getStoreCategories('name', true, false); 

// sorted by name, fetched as array 
$categoriesArray = $helper->getStoreCategories('name', false, false);

5. 在magento中只显示顶级分类

下面的代码将获取所有magento顶级分类

<?php $_helper = Mage::helper('catalog/category') ?> 
<?php $_categories = $_helper->getStoreCategories() ?> 
<?php if (count($_categories) > 0): ?> 
<ul> 
<?php foreach($_categories as $_category): ?> 
<li> 
<a href="getCategoryUrl($_category) ?>"> 
<?php echo $_category->getName() ?> 
</a> 
</li> 
<?php endforeach; ?> 
</ul> 
<?php endif; ?> 

6. 在magento中显示所有顶级分类及其所有子分类

下面的代码将获取所有的magento商店中顶级分类以及所有子分类

<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
<?php echo $_category->getName() ?> //Top Level Category Listing
</a>
<?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
<?php $_subcategories = $_category->getChildrenCategories() ?>
<?php if (count($_subcategories) > 0): ?>
<ul>
<?php foreach($_subcategories as $_subcategory): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>"> //Sub Category Listing
<?php echo $_subcategory->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

7. 在magento中显示当前顶级分类的子分类

下面的代码将获取当前顶级分类的所有子分类

<?php $_currentCategory = Mage::register('current_category') ?>
<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_category) ?>" title="<?php echo $_category->getName() ?>">
<?php echo $_category->getName() ?>
</a>
<?php if ($_category->getId() == $_currentCategory->getId()): ?>
<?php $_subcategories = $_currentCategories->getChildrenCategories() ?>
<?php if (count($_subcategories) > 0): ?>
<ul>
<?php foreach($_subcategories as $_subcategory): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>" title="<?php echo $_subcategory->getName() ?>">
<?php echo $_subcategory->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

希望对你有帮助,Thanks