2012-03-18 3 views
0

주 범주의 하위 범주를 호출하는 코드가 있으며 사이트 프런트 엔드에서 하위 범주의 정렬 순서를 변경할 수 있어야합니다.자홍색으로 하위 범주의 정렬 순서 변경

태그를 정렬하기 위해 속성을 추가하려했으나 아무 것도하지 않았습니다. 누구든지 올바른 방향으로 나를 도와줌으로써이 일을 얻을 수 있습니다. 많은 감사 :

->addAttributeToSort(’position’, ‘asc’) 

주문에 영향을주는 것은 아닙니다. 내가 사용하고있는 코드는 다음과 같습니다 :

  <?php 
     //get the current category 
     $_cat = new Mage_Catalog_Block_Navigation(); 
     $currentCat = $_cat->getCurrentCategory(); 

     //get the children of the current category 
     $subCats = Mage::getModel('catalog/category')->load($currentCat->getId())->getChildren(); 
     //get sub category ids 
     $subCatIds = explode(',',$subCats); 
     ?> 
     <?php if (count($subCatIds) > 1): ?> 
     <?php foreach($subCatIds as $subCatId): ?> 
     <?php $subCat = Mage::getModel('catalog/category')->load($subCatId); ?> 
     <?php if($subCat->getIsActive()): ?> 

답변

0

당신이 시도 할 수 있습니다 :

당신이 코드를 작성할 수 있습니다 $ subCats이

$collection = Mage::getModel('catalog/category')->getCollection() 
       ->addAttributeToFilter('entity_id', array('in' => $subCats)) 
       ->addAttributeToSelect('entity_id'); 
if($collection) 
{ 
    $subCatIds = $collection->setOrder('position', 'asc'); 
} 

후에는 함께 갈 수 foreach $ subCatIds을 수행 한 후 id. 희망이 도움이 될 것입니다 ...

3

@Jason Millward 모든 개체에 load()를 호출하지 마십시오. 가까운 시일 내에 사이트 성능에 영향을 미칩니다.)
예제를 만들었습니다.

$currentCategory = Mage::getModel('catalog/category')->load(3); 
    $collection = $currentCategory->getCollection(); 
    $collection->addAttributeToSelect('url_key') 
     ->addAttributeToSelect('name') 
     ->addAttributeToSelect('all_children') 
     ->addAttributeToSelect('is_anchor') 
     ->addAttributeToFilter('is_active', 1) 
     ->addIdFilter($currentCategory->getChildren()) 
     ->setOrder('position', Varien_Db_Select::SQL_ASC) 
     ->load(); 

카테고리 엔티티는 이미 admin에서 관리됩니다.
카테고리를 주문하는 데 사용하십시오.

+0

감사합니다.하지만이 코드를 호출하여 이것을 호출합니까? 많은 분들께 감사드립니다. –

+0

글쎄요, 원하는 장소에 따라 달라집니다 :) – Sergey

+0

제가 이미 게시 한 코드에 추가 할 수 있습니까? 아니면 이걸 맞게 다시 작성해야합니까? –

0

위치별로 정렬하여 특정 카테고리의 하위 카테고리를로드하려는 경우. 이것을 시도하십시오 :

/** @var Mage_Catalog_Model_Resource_Category_Flat_Collection $storeCategories */ 
$storeCategories = Mage::getModel('catalog/category')->getCategories(
    $currentCategory->getId(), 0, false, true, false 
); 
$storeCategories->unshiftOrder('position', Varien_Db_Select::SQL_ASC); 

우리가 unshiftOrder 대신 setOrder를 사용해야합니다 통지합니다. 그렇지 않으면 콜렉션을로드하기 전에 먼저 이름순으로 정렬이 설정됩니다.
어떻게 작동하는지 톱 메뉴에 대한 참조였습니다. 희망이 사람을 도울 것입니다!