Magento 2 Сортировка товаров по цене от высокой до низкой


Я установил сортировку по умолчанию по цене в admin , но все равно мне нужно отсортировать цену от высокой к низкой. Magento по умолчанию сортирует его от низкого к высокому. я пытаюсь найти опцию в admin, но не могу ее найти. может ли кто-нибудь сказать мне код для этого, чтобы сделать сортировку по умолчанию от высокой к низкой? Я использую тему порту для своего магазина.

Author: sv3n, 2017-12-12

3 answers

Скопируйте файл vendor/magento/module-catalog/view/frontend/layout/catalog_category_view.xml в свою тему, т.е.; app/design/frontend/{{Namespace}}/{{Theme}}/Magento_Catalog/layout/catalog_category_view.xml.

И поместите следующий код в XML-файл.

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <referenceBlock class="Magento\Catalog\Block\Product\ListProduct" name="category.products.list" as="product_list">
                <action method="setDefaultDirection">
                    <argument name="dir" xsi:type="string">desc</argument>
                </action>
            </referenceBlock>
        </referenceContainer>
    </body>
</page>
 6
Author: N. Karthic Kannan, 2017-12-14 11:37:28

Для инвертирования вашего результата из ASC в Desc во время загрузки. Просто добавьте этот код в свой расширенный Magento_Catalog/layout/catalog_category_view.xml

<body>
    ...
    <referenceContainer name="content">
       <referenceBlock class="Magento\Catalog\Block\Product\ListProduct" name="category.products.list" as="product_list">
            <action method="setDefaultDirection">
                <argument name="dir" xsi:type="string">desc</argument>
            </action>
        </referenceBlock>
    </referenceContainer>
    ...
</body>
 3
Author: JACK, 2017-12-14 11:39:47

Вам необходимо переопределить функцию getavailableorder() и setcollection() Magento

/vendor/magento/module-catalog/Block/Product/ProductList/Toolbar.php

Ниже приведен код, который может вам помочь.

public function aroundGetAvailableOrders(\Magento\Catalog\Block\Product\ProductList\Toolbar $subject, \Closure $proceed)
{
    $returnValue = $proceed();
    unset($returnValue['price']);
    $returnValue['priceDesc'] = 'price - high to low';
    $returnValue['priceAsc'] = 'price - low to high';
    return $returnValue;
}

public function aroundSetCollection(\Magento\Catalog\Block\Product\ProductList\Toolbar $subject, \Closure $proceed, $collection)
{
    $returnValue = $proceed($collection);
    if ($subject->getCurrentOrder() == 'priceHighToLow') {
        $collection->addAttributeToSelect('*')->setOrder('price', 'ASC');
        $collection->load();
    }
    return $collection;
}
 1
Author: Rishabh Rk Rai, 2017-12-19 12:06:52