Приветствую,
Я пытаюсь сортировать массив значений параметров атрибута по их «позиции», как указано в панели «Управление атрибутами». Кажется, я все пробовал, кто-нибудь знает, как это возможно?
Я думал, что это сработает:
$_collection = Mage::getResourceModel('eav/entity_attribute_option_collection') ->setStoreFilter(0) ->setAttributeFilter($_productAttribute->getId()) ->addAttributeToSort('position') ->load();
Но это не так. Любая помощь будет принята с благодарностью!
Я уже привык к addAttributeToSort в предыдущем проекте: возможно, эта функция не работает до сегодняшнего дня, попробовав с помощью setOrder ('columname') или попробуй обновить пурпуру до последней версии
Отлично работает. В Magento 1.6 + используйте setOrder('sort_order')
.
$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);
В начале приложения / design / frontend / default / default / template / 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.
По мере его сбора он загружает загрузку запроса присоединения к коллекции и использует функцию загрузки. так что если вы добавите заказ после
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();