2011-02-21 4 views
2

Привет,magento сортировка атрибут опция коллекция по положению?

Я пытаюсь сортировать массив значений атрибутов по их «позиции», как указано в панели атрибутов управления. Кажется, я все пробовал, кто-нибудь знает, как это возможно?

Я был уверен, что это будет работать:

$_collection = Mage::getResourceModel('eav/entity_attribute_option_collection') 
     ->setStoreFilter(0) 
     ->setAttributeFilter($_productAttribute->getId()) 
     ->addAttributeToSort('position') 
     ->load(); 

Но это не так. Любая помощь будет принята с благодарностью!

ответ

1

Я был опытные настройки уже с addAttributeToSort в предыдущем проекте: возможно, эта функция не работает до сегодняшнего дня не попробовать с SetOrder («columname») или попытаться обновить Magento до последней версии

0

ОТЛИЧНО. В Magento 1.6 + используйте setOrder('sort_order').

0
$attribute = Mage::getModel('eav/entity_attribute')->load($code, 'attribute_code'); 
$option_col = Mage::getResourceModel('eav/entity_attribute_option_collection') 
->setAttributeFilter($attribute->getId()) 
->setStoreFilter() 
->setPositionOrder('ASC'); 
$option_col->getSelect()->order('main_table.sort_order '.$orderby); 
+0

Добро пожаловать на SO. Пожалуйста, объясните код, когда вы ответите. – Tim

0

В начале приложения/дизайн/интерфейс/по умолчанию/по умолчанию/шаблон/manapro/filtercheckboxes/items.phtml добавить следующий код:

function cmp($a, $b){ 
    if ($a == $b) 
    return 0; 
    return ($a['position'] < $b['position']) ? -1 : 1; 
} 
$array = $this->getItems(); 
usort($array, "cmp"); 

и заменить $ this-> GetItems() с массивом $ array в цикле foreach.

0

Как его собирать, он загружает нагрузку, присоединяет запрос к сбору и использует функцию загрузки. так что если вы добавляете заказ после

Mage::getResourceModel('eav/entity_attribute_option_collection') 

так же, как:

$_collection = Mage::getResourceModel('eav/entity_attribute_option_collection')->getSelect()->order('main_table.sort_order '.$orderby); 
     $_collection->setStoreFilter(0) 
     ->setAttributeFilter($_productAttribute->getId()) 
     ->load(); 
Смежные вопросы