2つの属性でCatalogSearchをソートします
-
16-10-2019 - |
質問
「位置」または「関連性」のみではなく、2つの属性でCatalogSearchの結果を並べ替えるにはどうすればよいですか?ツールバーではなく、デフォルトでソートする必要があります。たとえば、最初に「属性1」で製品を並べ替えてから、ツールバーを変更せずに「属性2」で並べ替えて、それらのいずれかを選択しますか?
詳細については、4つの製品があります。
- 121/24R
- 123/83C
- 123/15H
- 121/55H
最初に123,121の2つの属性があり、別の属性は24,83,15,55です。
次に、「ASC」の最初の属性と「DESC」の別の属性を使用して製品の結果をソートしたいですか?
このような :
- 121/55H
- 121/24R
- 123/83H
- 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 Listing
に Yes
この属性の場合、フラットカタログが有効になっているときに属性を見つけることができます。
このコードはそうします 検索結果とカテゴリページで製品を並べ替えます. 。あなたがしたい場合は 制限 機能 結果を検索します, 、あなたはこのようなことをすることができます:
<?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;
}
}
所属していません magento.stackexchange