2

Magento での属性の並べ替えに問題があります。カテゴリ リストの並べ替えに使用している製品のドロップ ダウン属性を作成しました。私が遭遇した問題は、並べ替えが、指定した順序ではなく、値によって行われることです。

例: オプション付きの属性 color があります: 1. 赤
2. 黒
3. 緑

色で並べ替える場合、順序は黒、緑、赤ですが、赤、黒、緑にする必要があります。

理論的には問題を解決するパッチを見つけましたが、機能させることはできません。 https://gist.github.com/colinmollenhour/4082426

私のマジェントのバージョンは1.7.0.2です。

ありがとう。

4

1 に答える 1

2

このパッチを機能させるには、いくつかの変更が必要です。ただし、コードは、別のクラスのモデル リライトに配置することをお勧めします。

私にとってうまくいった解決策Mage_Eav_Model_Entity_Attribute_Source_Table::addValueSortToCollectionは、関数の最後に次のコードをオーバーライドして追加することでした。

        $attribute = $this->getAttribute();
        $order = $attribute->getAttributeCode();
        $dir = strtoupper($dir);
        $collection->getSelect()->reset(Zend_Db_Select::ORDER);
        $collection->getSelect()
            ->joinLeft('eav_attribute_option AS eao', "eao.option_id=IF({$order}_t2.value_id > 0, {$order}_t2.value, {$order}_t1.value)", array("sort_order" => 'eao.option_id'))
                ->order(new Zend_Db_Expr('eao.sort_order '.$dir));

これは、すべてのカタログ コレクションおよびソース モデル クラスがeav/entity_attribute_source_table

于 2013-02-18T10:11:20.230 に答える