0

現在のカテゴリに関連付けられているすべてのサブカテゴリのリストを表示しているサイトで作業しています。以下のコードはそのためにうまく機能しますが、サブカテゴリのリストの並べ替え方法を変更したいと思います。現在、カテゴリIDで並べ替えています。Magentoユーザーが管理者にカテゴリを配置した順序(ドラッグアンドドロップでカテゴリの順序を変更できる)で表示したいのですが。助けに感謝します!

             <?php
                $currentCat = Mage::registry('current_category');

                if ( $currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId() )
                {
                    // current category is a toplevel category
                    $loadCategory = $currentCat;
                }
                else
                {
                    // current category is a sub-(or subsub-, etc...)category of a toplevel category
                    // load the parent category of the current category
                    $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="'.$cat->getURL().'">'.$cat->getName().'</a>';
                    }
                }
            ?>
4

1 に答える 1

6

getChildrenCategories を呼び出してみてください。これにより、各カテゴリの位置が考慮されます。

$loadCategory->getChildrenCategories()

編集済み

すべてのカテゴリ ID の文字列を返す getChildren とは異なり、Mage_Catalog_Model_Category の配列を返すため、これを考慮してコードを変更する必要があります。

上記のコード スニペットから、次の変更が機能するはずです。getChildrenCategories() の呼び出しと foreach ループの変更に注意してください。各項目はカテゴリ オブジェクトである必要があります。

<?php
$currentCat = Mage::registry('current_category');

if ( $currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId() )
{
    // current category is a toplevel category
    $loadCategory = $currentCat;
}
else
{
    // current category is a sub-(or subsub-, etc...)category of a toplevel category
    // load the parent category of the current category
    $loadCategory = Mage::getModel('catalog/category')->load($currentCat->getParentId());
}
$subCategories = $loadCategory->getChildrenCategories();

foreach ( $subCategories as $subCategory )
{
    if($subCategory->getIsActive())
    {
        echo '<a href="'.$subCategory->getURL().'">'.$subCategory->getName().'</a>';
    }
}
?> 
于 2013-02-15T16:43:51.463 に答える