0

カスタマイズされたカテゴリのメニューをまとめるために、以下のコードを書きました。すべて正常に動作しますが、カテゴリの順序が、ドラップ アンド ドロップ機能がある管理者パネルで定義されている順序と同じであることを望みます。

<?php
    $subCats = Mage::getModel('catalog/category')->load(76)->getChildren();
    $dispositosCatIds = explode(',',$subCats);
?>
<ul class="menu">
<?php $controleNum = 0; ?>
<?php foreach($dispositosCatIds as $dispositoCatId): ?>
<?php $aparelhoCat = Mage::getModel('catalog/category')->load($dispositoCatId); ?>
<?php if($aparelhoCat->getIsActive()): ?>
    <li class="<?php print $controleNum ? '' : 'submenu first'; ?>"><a class="drop" href="<?php echo $aparelhoCat->getUrl(); ?>"> <span><?php echo $aparelhoCat->getName(); ?></span></a> <!--Begin 6 column Item  -->
    <div class="dropdown_6columns">
    <div class="inner"><span class="title"><?php echo $aparelhoCat->getName(); ?></span>
    <div class="col_2">
    <div class="col_2 firstcolumn"><img src="<?php echo $aparelhoCat->getImageUrl(); ?>" alt="<?php echo $aparelhoCat->getName(); ?>" /></div>
    </div>
    <div class="col_4" style="margin-bottom: 20px;">
        <?php echo $aparelhoCat->getDescription(); ?>
    </div>
    <div class="col_2 categorias-super"><span class="title_col">Produtos para <?php echo $aparelhoCat->getName(); ?></span> 
    <?php $subSubCats = $aparelhoCat->getChildrenCategories();?>

    <?php if (count($subSubCats) > 0): ?>
        <?php //$controleNumLI = 0; ?>
        <ul style="list-style: none; float: none !important;">
        <?php foreach($subSubCats as $_subcategory): //Rodando entre as categorias de Um dispositivo ?>
            <?php if($_subcategory->getIsActive()): ?>
                <li class="level1 <?php //print $controleNumLI ? '' : 'first'; ?>"> <a href="<?php echo $_subcategory->getUrl(); ?>"><?php echo $_subcategory->getName(); ?></a></li>
                <?php //$controleNumLI += 1; ?>
            <?php endif; ?>
        <?php endforeach; ?>
        </ul>
    <?php endif; ?>
    </div>
    </div>
    </div>
    </li>
    <?php $controleNum += 1; ?>
<?php endif; ?>    
<?php endforeach; ?>
</ul>

私はこれを行うことができる他のモード(ここに基づく)を使用しようとしましたが、できませんでした。関数が返す問題getChildren()は、昇順の ID を持つ文字列です。

いくつかのアイデア?

4

2 に答える 2

1

これは、管理者の順序でドロップダウン ボックスにカテゴリを表示するために使用するコードです...キーは setOrder('path','ASC') です

    $categories = array();

    $_categories = Mage::getModel('catalog/category')->getCollection()
                            ->addAttributeToFilter('is_active',array('eq'=>true))
                            ->addAttributeToSelect('level')
                            ->setOrder('path','ASC')
                            ->addAttributeToSelect('name')->load();




    foreach($_categories as $cat){
        $level = $cat->getLevel() - 1;
        $pad = str_repeat("----", ($level > 0) ? $level : 0);

        $categories[] = array('value' => $cat->getEntityId(), 'label' => $pad . ' ' . $cat->getName());
    }

    print_r($categories);

次のようなことができます:配列リストから配列ツリーを作成

于 2012-10-02T21:17:36.553 に答える
1

わかった:

$dispositovosCategoryId = 76;
$dispositovosCategoryIds = Mage::getModel('catalog/category')->getCollection()
    ->addFieldToFilter('parent_id', array('eq'=>$dispositovosCategoryId))
    ->addAttributeToFilter('is_active',array('eq'=>true))
    ->addAttributeToSelect('level')
    ->setOrder('position','ASC')
    ->addAttributeToSelect('name','url','image')
    ->load();
于 2012-10-05T14:36:09.263 に答える