質問

「位置」または「関連性」のみではなく、2つの属性でCatalogSearchの結果を並べ替えるにはどうすればよいですか?ツールバーではなく、デフォルトでソートする必要があります。たとえば、最初に「属性1」で製品を並べ替えてから、ツールバーを変更せずに「属性2」で並べ替えて、それらのいずれかを選択しますか?

詳細については、4つの製品があります。

  1. 121/24R
  2. 123/83C
  3. 123/15H
  4. 121/55H

最初に123,121の2つの属性があり、別の属性は24,83,15,55です。

次に、「ASC」の最初の属性と「DESC」の別の属性を使用して製品の結果をソートしたいですか?

このような :

  1. 121/55H
  2. 121/24R
  3. 123/83H
  4. 123/15c

この方法を使用するにはどうすればよいですか?

役に立ちましたか?

解決

まず、拡張機能を作成します(私の例ではemzee_sorterと呼ばれています)。 catalog_block_product_list_collection あなたの中で config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <Emzee_Sorter>
            <version>1.0.0</version>
        </Emzee_Sorter>
    </modules>
    <global>
        <models>
            <emzee_sorter>
                <class>Emzee_Sorter_Model</class>
            </emzee_sorter>
        </models>
        <events>
            <catalog_block_product_list_collection>
                <observers>
                    <emzee_sorter>
                        <class>emzee_sorter/observer</class>
                        <method>catalogBlockProductListCollection</method>
                    </emzee_sorter>
                </observers>
            </catalog_block_product_list_collection>
        </events>
    </global>
</config>

次に、オブザーバークラスを作成します。

<?php

class Emzee_Sorter_Model_Observer
{
    /**
     * @param Varien_Event_Observer $observer
     * @return Emzee_Sorter_Model_Observer
     */
    public function catalogBlockProductListCollection(Varien_Event_Observer $observer)
    {
        $collection = $observer->getEvent()->getCollection();
        $collection->addOrder('sort_2', Varien_Data_Collection::SORT_ORDER_DESC);
        return $this;
    }
}

sort_2 含まれる属性です 55H 等々。あなたが設定していることを確認してください Used in Product ListingYes この属性の場合、フラットカタログが有効になっているときに属性を見つけることができます。

このコードはそうします 検索結果とカテゴリページで製品を並べ替えます. 。あなたがしたい場合は 制限 機能 結果を検索します, 、あなたはこのようなことをすることができます:

<?php

class Emzee_Sorter_Model_Observer
{
    /**
     * @param Varien_Event_Observer $observer
     * @return Emzee_Sorter_Model_Observer
     */
    public function catalogBlockProductListCollection(Varien_Event_Observer $observer)
    {
        $request = Mage::app()->getFrontController()->getRequest();
        $action = $request->getModuleName() . '_' . $request->getControllerName() . '_' . $request->getActionName();
        if ($action === 'catalogsearch_result_index' || $action === 'catalogsearch_advanced_result') {
            $collection = $observer->getEvent()->getCollection();
            $collection->addOrder('sort_2', Varien_Data_Collection::SORT_ORDER_DESC);
        }
        return $this;
    }
}
ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top