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

发布于 2024-10-18 10:19:05 字数 388 浏览 3 评论 0原文

您好,

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

我确信这会起作用:

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

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

Greetings,

I am trying to sort an array of attribute option values by their "position" as entered in the manage attributes panel. I seem to have tried everything, does anyone know how this is possible?

I thought for sure this would work:

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

But it didn't. Any help would be greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

药祭#氼 2024-10-25 10:19:05

我已经在之前的项目中体验过 addAttributeToSort 了:也许这个函数直到今天才起作用,尝试使用 setOrder('columname') 或尝试将您的 magento 更新到最新版本

I've alredy been experienced with addAttributeToSort in a previous project: maybe this function doesn't works until today try with setOrder('columname') or try to update your magento to last version

时常饿 2024-10-25 10:19:05

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

Working great. In Magento 1.6 + use setOrder('sort_order').

老街孤人 2024-10-25 10:19:05
$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);
$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);
梦冥 2024-10-25 10:19:05

在 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 循环中将 $this->getItems() 替换为 $array 。

At the begining of app/design/frontend/default/default/template/manapro/filtercheckboxes/items.phtml add following code:

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

And replace $this->getItems() with $array in foreach loop.

∞梦里开花 2024-10-25 10:19:05

当它读取集合时,它将加载连接查询到集合并使用加载函数。因此,如果您在之后添加订单,

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();

As it eav collection it load load join query to collection and using load function. so if you add order after

Mage::getResourceModel('eav/entity_attribute_option_collection')

just like:

$_collection = Mage::getResourceModel('eav/entity_attribute_option_collection')->getSelect()->order('main_table.sort_order '.$orderby);
        $_collection->setStoreFilter(0)
        ->setAttributeFilter($_productAttribute->getId())
        ->load();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文