根据管理员中的位置对Magento中的类别进行排序

jam*_*mes 11 magento

我想知道如何按照管理面板中的位置对magento 中的类别列表进行排序(我按照本教程http://www.devinrolsen.com/magento-custom-category-listing-block/)进行排序?目前它按id排序

<?php
$cats = Mage::getModel('catalog/category')->load(3)->getChildren();
$catIds = explode(',',$cats);
?>
<ul>
<?php foreach($catIds as $catId): ?>
    <li>
        <?php
            $category = Mage::getModel('catalog/category')->load($catId);
            echo '<a href="' . $category->getUrl() . '">';
            echo $category->getName() . '</a>';
        ?>
    </li>
<?php endforeach; ?>
</ul>
Run Code Online (Sandbox Code Playgroud)

clo*_*eek 22

你为自己试图处理ID和东西做了太多的工作.以下内容已按位置排序为标准.

<?php
$cats = Mage::getModel('catalog/category')->load(3)->getChildrenCategories();
?>
<ul>
<?php foreach($cats as $category): ?>
    <li>
        <a href="<?php echo $category->getUrl() ?>"><?php echo $category->getName() ?></a>
    </li>
<?php endforeach; ?>
</ul>
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您想要的类别由adminhtml然后你可以创建位置排序,因为catalog/category是的一个实例Mage_Catalog_Model_Resource_Category_Collection,让您在其中指定要选择,过滤器和/或排序什么的查询.

这里的案例是从catalog_category_entity仅选择名称获取类别,在id之后过滤并对查询进行排序position.

<?php 
 $subcategories = Mage::getModel('catalog/category')->getCollection()
->addAttributeToSelect('name')
->addFieldToFilter('parent_id', $categoryId)
->addAttributeToSort('position', ASC);
?>
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用''position'而不是''name',这就行了. (5认同)
  • 为什么这是一个解决方案?请解释. (3认同)

Ant*_*n S 1

我强烈建议首先查看这里http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-8-varien-data-collections,知识库中的其他文章也是必读的任何 magento 开发人员。

<?php
$cats = Mage::getModel('catalog/category')->addAttributeToSort('yourfield', 'desc')->getCollection()->getChildren();
$catIds = explode(',',$cats);
?>
Run Code Online (Sandbox Code Playgroud)