From aba5efd1452323851b155f4ca0608b7efd546b68 Mon Sep 17 00:00:00 2001 From: rogerdz Date: Thu, 22 May 2025 07:54:07 +0000 Subject: [PATCH 1/3] Elastic Search interferes with the default sort order of products (changing newest first to oldest first) --- .../Model/ResourceModel/Fulltext/Collection.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php index 3583a5d738ec3..43d3e97f4027f 100644 --- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php +++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php @@ -1,7 +1,7 @@ setOrder('entity_id', Select::SQL_ASC); + $this->setOrder('entity_id', Select::SQL_DESC); return parent::_beforeLoad(); } From 4f3d079a55e7837caf5e1e4c00faf3a6ae27aa1f Mon Sep 17 00:00:00 2001 From: engcom-Dash Date: Wed, 9 Jul 2025 13:28:17 +0530 Subject: [PATCH 2/3] Fixed Functional Failures & added store config for sort Order --- .../Catalog/Model/Config/Source/SortOrder.php | 27 ++++++++++ .../Mftf/Data/CatalogStorefrontConfigData.xml | 10 +++- ...ontPaginationResetOnViewModeChangeTest.xml | 1 + ...ntProductSortByPositionInDescOrderTest.xml | 51 +++++++++++++++++++ ...frontPropertiesOfAProductAttributeTest.xml | 1 + .../Magento/Catalog/etc/adminhtml/system.xml | 5 ++ app/code/Magento/Catalog/etc/config.xml | 1 + .../ResourceModel/Fulltext/Collection.php | 7 ++- ...ickSearchTwoProductsWithSameWeightTest.xml | 1 + 9 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 app/code/Magento/Catalog/Model/Config/Source/SortOrder.php create mode 100644 app/code/Magento/Catalog/Test/Mftf/Test/StorefrontProductSortByPositionInDescOrderTest.xml diff --git a/app/code/Magento/Catalog/Model/Config/Source/SortOrder.php b/app/code/Magento/Catalog/Model/Config/Source/SortOrder.php new file mode 100644 index 0000000000000..d9374910d8663 --- /dev/null +++ b/app/code/Magento/Catalog/Model/Config/Source/SortOrder.php @@ -0,0 +1,27 @@ + 'ASC', 'label' => __('Ascending')], + ['value' => 'DESC', 'label' => __('Descending')], + ]; + } +} diff --git a/app/code/Magento/Catalog/Test/Mftf/Data/CatalogStorefrontConfigData.xml b/app/code/Magento/Catalog/Test/Mftf/Data/CatalogStorefrontConfigData.xml index 4ca5caf222b16..639d3b479ff21 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Data/CatalogStorefrontConfigData.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Data/CatalogStorefrontConfigData.xml @@ -105,6 +105,10 @@ catalog/frontend/list_allow_all 1 + + catalog/frontend/default_sort_by_order + DESC + catalog/frontend/list_mode grid-list @@ -125,4 +129,8 @@ catalog/frontend/list_allow_all 0 - \ No newline at end of file + + catalog/frontend/default_sort_by_order + ASC + + diff --git a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPaginationResetOnViewModeChangeTest.xml b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPaginationResetOnViewModeChangeTest.xml index b74fc02e66578..b9997c16db217 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPaginationResetOnViewModeChangeTest.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPaginationResetOnViewModeChangeTest.xml @@ -28,6 +28,7 @@ + diff --git a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontProductSortByPositionInDescOrderTest.xml b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontProductSortByPositionInDescOrderTest.xml new file mode 100644 index 0000000000000..e9c979afcd8b8 --- /dev/null +++ b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontProductSortByPositionInDescOrderTest.xml @@ -0,0 +1,51 @@ + + + + + + + + <description value="Use store configuration to sort products of same position in desc order"/> + <severity value="MAJOR"/> + <testCaseId value="AC-14411"/> + <group value="Catalog"/> + </annotations> + <before> + <createData entity="_defaultCategory" stepKey="createCategory"/> + <createData entity="productAlphabeticalA" stepKey="product1"> + <requiredEntity createDataKey="createCategory"/> + </createData> + <createData entity="productAlphabeticalB" stepKey="product2"> + <requiredEntity createDataKey="createCategory"/> + </createData> + <magentoCLI command="config:set {{CustomStoreFrontProductsSortByOrder.path}} {{CustomStoreFrontProductsSortByOrder.value}}" stepKey="setCustomSortByOrderValue"/> + <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> + <argument name="indices" value=""/> + </actionGroup> + </before> + <after> + <deleteData stepKey="deleteProduct1" createDataKey="product1"/> + <deleteData stepKey="deleteProduct2" createDataKey="product2"/> + <deleteData stepKey="deleteCategory" createDataKey="createCategory"/> + <magentoCLI command="config:set {{DefaultStoreFrontProductsSortByOrder.path}} {{DefaultStoreFrontProductsSortByOrder.value}}" stepKey="setDefaultSortByOrderValue"/> + </after> + + <actionGroup ref="StorefrontNavigateToCategoryUrlActionGroup" stepKey="NavigateToCategoryPageOnStoreFront"> + <argument name="categoryUrl" value="$$createCategory.custom_attributes[url_key]$$"/> + </actionGroup> + <actionGroup ref="StorefrontQuickSearchCheckProductNameInGridActionGroup" stepKey="assertProduct1Position"> + <argument name="productName" value="$product1.name$"/> + <argument name="index" value="2"/> + </actionGroup> + <actionGroup ref="StorefrontQuickSearchCheckProductNameInGridActionGroup" stepKey="assertProduct2Position"> + <argument name="productName" value="$product2.name$"/> + <argument name="index" value="1"/> + </actionGroup> + </test> +</tests> diff --git a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPropertiesOfAProductAttributeTest.xml b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPropertiesOfAProductAttributeTest.xml index 3659ecd5bcddb..504b9e44a30ff 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPropertiesOfAProductAttributeTest.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPropertiesOfAProductAttributeTest.xml @@ -20,6 +20,7 @@ </annotations> <before> <!-- Step1: Login as Admin --> + <magentoCLI command="config:set {{DefaultStoreFrontProductsSortByOrder.path}} {{DefaultStoreFrontProductsSortByOrder.value}}" stepKey="setDefaultSortByOrderValue"/> <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> </before> <after> diff --git a/app/code/Magento/Catalog/etc/adminhtml/system.xml b/app/code/Magento/Catalog/etc/adminhtml/system.xml index 5eca719ca22c3..58307944ab94f 100644 --- a/app/code/Magento/Catalog/etc/adminhtml/system.xml +++ b/app/code/Magento/Catalog/etc/adminhtml/system.xml @@ -93,6 +93,11 @@ <comment>Applies to category pages.</comment> <source_model>Magento\Catalog\Model\Config\Source\ListSort</source_model> </field> + <field id="default_sort_by_order" translate="label comment" type="select" sortOrder="6" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1"> + <label>Product Listing Sort by Order</label> + <comment>Applies to category pages.</comment> + <source_model>Magento\Catalog\Model\Config\Source\SortOrder</source_model> + </field> <field id="list_allow_all" translate="label comment" type="select" sortOrder="6" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1"> <label>Allow All Products per Page</label> <comment>Whether to show "All" option in the "Show X Per Page" dropdown.</comment> diff --git a/app/code/Magento/Catalog/etc/config.xml b/app/code/Magento/Catalog/etc/config.xml index 3ab3472fe2652..65a1bf3926679 100644 --- a/app/code/Magento/Catalog/etc/config.xml +++ b/app/code/Magento/Catalog/etc/config.xml @@ -30,6 +30,7 @@ <flat_catalog_category>0</flat_catalog_category> <flat_catalog_product>0</flat_catalog_product> <default_sort_by>position</default_sort_by> + <default_sort_by_order>ASC</default_sort_by_order> <list_allow_all>0</list_allow_all> <parse_url_directives>1</parse_url_directives> <remember_pagination>0</remember_pagination> diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php index 43d3e97f4027f..c6d228bca4c34 100644 --- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php +++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php @@ -581,7 +581,12 @@ protected function _beforeLoad() * for the same requests and products with the same relevance * NOTE: this does not replace existing orders but ADDs one more */ - $this->setOrder('entity_id', Select::SQL_DESC); + $defaultSortOrder = $this->_scopeConfig->getValue( + 'catalog/frontend/default_sort_by_order', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + $sortOrder = ($defaultSortOrder == self::SORT_ORDER_ASC) ? Select::SQL_ASC : Select::SQL_DESC; + $this->setOrder('entity_id', $sortOrder); return parent::_beforeLoad(); } diff --git a/app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest/QuickSearchTwoProductsWithSameWeightTest.xml b/app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest/QuickSearchTwoProductsWithSameWeightTest.xml index 24931698ab8a4..951f70cbc4465 100644 --- a/app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest/QuickSearchTwoProductsWithSameWeightTest.xml +++ b/app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest/QuickSearchTwoProductsWithSameWeightTest.xml @@ -70,6 +70,7 @@ <argument name="value" value="{{_defaultProduct.name}}"/> </actionGroup> <actionGroup ref="SaveProductFormActionGroup" stepKey="saveProduct2b"/> + <magentoCLI command="config:set {{DefaultStoreFrontProductsSortByOrder.path}} {{DefaultStoreFrontProductsSortByOrder.value}}" stepKey="setDefaultSortByOrderValue"/> <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> <argument name="indices" value=""/> </actionGroup> From 5ff15c2c00c1581f59568ea802a1fb6b127d5b83 Mon Sep 17 00:00:00 2001 From: engcom-Dash <grp-engcom-vendorworker-Dash@adobe.com> Date: Wed, 9 Jul 2025 15:50:53 +0530 Subject: [PATCH 3/3] Fixed Static Failures --- app/code/Magento/Catalog/Model/Config/Source/SortOrder.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Catalog/Model/Config/Source/SortOrder.php b/app/code/Magento/Catalog/Model/Config/Source/SortOrder.php index d9374910d8663..fc7f33cd787f9 100644 --- a/app/code/Magento/Catalog/Model/Config/Source/SortOrder.php +++ b/app/code/Magento/Catalog/Model/Config/Source/SortOrder.php @@ -3,6 +3,7 @@ * Copyright 2025 Adobe * All Rights Reserved. */ +declare(strict_types=1); /** * Catalog Product List Sort Order