magento排序属性选项按位置收集?

时间:2011-02-21 16:05:18

标签: php zend-framework magento

问候,

我正在尝试按照管理属性面板中输入的“位置”对属性选项值数组进行排序。我似乎已经尝试了一切,有谁知道这是怎么可能的?

我确信这会奏效:

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

但事实并非如此。任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:1)

我已经在以前的项目中遇到过addAttributeToSort的经验:也许这个功能在今天尝试使用setOrder('columname')或者尝试将你的magento更新到最后一个版本

答案 1 :(得分:0)

工作得很好。在Magento 1.6中使用setOrder('sort_order')

答案 2 :(得分: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);

答案 3 :(得分:0)

在app / 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");

在foreach循环中用$ array替换$ this-&gt; getItems()。

答案 4 :(得分:0)

由于它是eav集合,它将加载加载查询加载到集合并使用加载函数。所以如果你在

后添加订单
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();