Magento 获取子类别/类别集合处理。编程效率
·
问题:Magento 获取子类别/类别集合处理。编程效率
好的,我在下面编写的代码效果很好,但是我有一些页面可能会达到几百个类别,我不想每次通过 foreach 循环都 ping 数据库。基本上是在寻找更好的方式来处理集合。其次,有没有办法可以验证此类别是否处于活动状态。
<ul>
<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php foreach($_categories as $_category): ?>
<?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
<?php $_subcategories = $_category->getChildrenCategories() ?>
<?php foreach($_subcategories as $_subcategory): ?>
<li><a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>"><?php echo $_subcategory->getName() ?></a></li>
<?php endforeach; ?>
<?php endforeach; ?>
</ul>
解答
如果你看一下代码 getStoreCategories 调用它使用Mage_Catalog_Model_Resource_Category_Tree。也许您可以像这样自己使用它:
<?php
require_once('app/Mage.php');
Mage::app();
$parent = Mage::app()->getStore()->getRootCategoryId();
$recursionLevel = 2;
$tree = Mage::getResourceModel('catalog/category_tree');
/* @var $tree Mage_Catalog_Model_Resource_Category_Tree */
$nodes = $tree->loadNode($parent)
->loadChildren($recursionLevel)
->getChildren();
$tree->addCollectionData(null, false, $parent);
foreach ($nodes as $node) {
/** @var $node Varien_Data_Tree_Node */
print_r($node->getData()); // first level category data
foreach ($node->getChildren() as $childNode) {
print_r($childNode->getData()); // second level category data
}
}
更多推荐
所有评论(0)