Skip to content

Commit 5b9944d

Browse files
Merge remote-tracking branch '40135/fix-31043' into novcomprs
2 parents 0b7db43 + 343d04a commit 5b9944d

File tree

9 files changed

+105
-2
lines changed

9 files changed

+105
-2
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
/**
3+
* Copyright 2025 Adobe
4+
* All Rights Reserved.
5+
*/
6+
declare(strict_types=1);
7+
8+
/**
9+
* Catalog Product List Sort Order
10+
*
11+
*/
12+
namespace Magento\Catalog\Model\Config\Source;
13+
14+
use Magento\Catalog\Model\ResourceModel\Product\Collection;
15+
16+
class SortOrder implements \Magento\Framework\Data\OptionSourceInterface
17+
{
18+
/**
19+
* Retrieve option values array
20+
*
21+
* @return array
22+
*/
23+
public function toOptionArray(): array
24+
{
25+
return [
26+
['value' => Collection::SORT_ORDER_ASC, 'label' => __('Ascending')],
27+
['value' => Collection::SORT_ORDER_DESC, 'label' => __('Descending')],
28+
];
29+
}
30+
}

app/code/Magento/Catalog/Test/Mftf/Data/CatalogStorefrontConfigData.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@
105105
<data key="path">catalog/frontend/list_allow_all</data>
106106
<data key="value">1</data>
107107
</entity>
108+
<entity name="CustomStoreFrontProductsSortByOrder">
109+
<data key="path">catalog/frontend/default_sort_by_order</data>
110+
<data key="value">DESC</data>
111+
</entity>
108112
<entity name="DefaultListMode">
109113
<data key="path">catalog/frontend/list_mode</data>
110114
<data key="value">grid-list</data>
@@ -125,4 +129,8 @@
125129
<data key="path">catalog/frontend/list_allow_all</data>
126130
<data key="value">0</data>
127131
</entity>
128-
</entities>
132+
<entity name="DefaultStoreFrontProductsSortByOrder">
133+
<data key="path">catalog/frontend/default_sort_by_order</data>
134+
<data key="value">ASC</data>
135+
</entity>
136+
</entities>

app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPaginationResetOnViewModeChangeTest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
</createData>
2929
<magentoCLI command="config:set {{CustomGridPerPageValuesConfigData.path}} {{CustomGridPerPageValuesConfigData.value}}" stepKey="setCustomGridPerPageValues"/>
3030
<magentoCLI command="config:set {{CustomGridPerPageDefaultConfigData.path}} {{CustomGridPerPageDefaultConfigData.value}}" stepKey="setCustomGridPerPageDefaults"/>
31+
<magentoCLI command="config:set {{DefaultStoreFrontProductsSortByOrder.path}} {{DefaultStoreFrontProductsSortByOrder.value}}" stepKey="setDefaultSortByOrderValue"/>
3132
</before>
3233
<after>
3334
<deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright 2020 Adobe
5+
* All Rights Reserved.
6+
*/
7+
-->
8+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="StorefrontProductSortByPositionInDescOrderTest">
11+
<annotations>
12+
<stories value="Sort Products having same position on Storefront In Desc Order"/>
13+
<title value="Sort products with the same position in descending order appropriately"/>
14+
<description value="Use store configuration to sort products of same position in desc order"/>
15+
<severity value="MAJOR"/>
16+
<testCaseId value="AC-14411"/>
17+
<group value="Catalog"/>
18+
</annotations>
19+
<before>
20+
<createData entity="_defaultCategory" stepKey="createCategory"/>
21+
<createData entity="productAlphabeticalA" stepKey="product1">
22+
<requiredEntity createDataKey="createCategory"/>
23+
</createData>
24+
<createData entity="productAlphabeticalB" stepKey="product2">
25+
<requiredEntity createDataKey="createCategory"/>
26+
</createData>
27+
<magentoCLI command="config:set {{CustomStoreFrontProductsSortByOrder.path}} {{CustomStoreFrontProductsSortByOrder.value}}" stepKey="setCustomSortByOrderValue"/>
28+
<actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex">
29+
<argument name="indices" value=""/>
30+
</actionGroup>
31+
</before>
32+
<after>
33+
<deleteData stepKey="deleteProduct1" createDataKey="product1"/>
34+
<deleteData stepKey="deleteProduct2" createDataKey="product2"/>
35+
<deleteData stepKey="deleteCategory" createDataKey="createCategory"/>
36+
<magentoCLI command="config:set {{DefaultStoreFrontProductsSortByOrder.path}} {{DefaultStoreFrontProductsSortByOrder.value}}" stepKey="setDefaultSortByOrderValue"/>
37+
</after>
38+
39+
<actionGroup ref="StorefrontNavigateToCategoryUrlActionGroup" stepKey="NavigateToCategoryPageOnStoreFront">
40+
<argument name="categoryUrl" value="$$createCategory.custom_attributes[url_key]$$"/>
41+
</actionGroup>
42+
<actionGroup ref="StorefrontQuickSearchCheckProductNameInGridActionGroup" stepKey="assertProduct1Position">
43+
<argument name="productName" value="$product1.name$"/>
44+
<argument name="index" value="2"/>
45+
</actionGroup>
46+
<actionGroup ref="StorefrontQuickSearchCheckProductNameInGridActionGroup" stepKey="assertProduct2Position">
47+
<argument name="productName" value="$product2.name$"/>
48+
<argument name="index" value="1"/>
49+
</actionGroup>
50+
</test>
51+
</tests>

app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPropertiesOfAProductAttributeTest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
</annotations>
2121
<before>
2222
<!-- Step1: Login as Admin -->
23+
<magentoCLI command="config:set {{DefaultStoreFrontProductsSortByOrder.path}} {{DefaultStoreFrontProductsSortByOrder.value}}" stepKey="setDefaultSortByOrderValue"/>
2324
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
2425
</before>
2526
<after>

app/code/Magento/Catalog/etc/adminhtml/system.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,11 @@
9393
<comment>Applies to category pages.</comment>
9494
<source_model>Magento\Catalog\Model\Config\Source\ListSort</source_model>
9595
</field>
96+
<field id="default_sort_by_order" translate="label comment" type="select" sortOrder="6" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
97+
<label>Product Listing Sort by Order</label>
98+
<comment>Applies to category pages.</comment>
99+
<source_model>Magento\Catalog\Model\Config\Source\SortOrder</source_model>
100+
</field>
96101
<field id="list_allow_all" translate="label comment" type="select" sortOrder="6" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
97102
<label>Allow All Products per Page</label>
98103
<comment>Whether to show "All" option in the "Show X Per Page" dropdown.</comment>

app/code/Magento/Catalog/etc/config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<flat_catalog_category>0</flat_catalog_category>
3131
<flat_catalog_product>0</flat_catalog_product>
3232
<default_sort_by>position</default_sort_by>
33+
<default_sort_by_order>ASC</default_sort_by_order>
3334
<list_allow_all>0</list_allow_all>
3435
<parse_url_directives>1</parse_url_directives>
3536
<remember_pagination>0</remember_pagination>

app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,12 @@ protected function _beforeLoad()
581581
* for the same requests and products with the same relevance
582582
* NOTE: this does not replace existing orders but ADDs one more
583583
*/
584-
$this->setOrder('entity_id', Select::SQL_ASC);
584+
$defaultSortOrder = $this->_scopeConfig->getValue(
585+
'catalog/frontend/default_sort_by_order',
586+
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
587+
);
588+
$sortOrder = ($defaultSortOrder == self::SORT_ORDER_ASC) ? Select::SQL_ASC : Select::SQL_DESC;
589+
$this->setOrder('entity_id', $sortOrder);
585590
return parent::_beforeLoad();
586591
}
587592

app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest/QuickSearchTwoProductsWithSameWeightTest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
<argument name="value" value="{{_defaultProduct.name}}"/>
7171
</actionGroup>
7272
<actionGroup ref="SaveProductFormActionGroup" stepKey="saveProduct2b"/>
73+
<magentoCLI command="config:set {{DefaultStoreFrontProductsSortByOrder.path}} {{DefaultStoreFrontProductsSortByOrder.value}}" stepKey="setDefaultSortByOrderValue"/>
7374
<actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex">
7475
<argument name="indices" value=""/>
7576
</actionGroup>

0 commit comments

Comments
 (0)