Magento2: за замовчуванням сортувати за ціною, що спадає, не зростає


11

Гаразд, у мене є категорії сортування за ціною. Magento 2 за замовчуванням застосовує це до зростання цін. Але я вважаю за краще, щоб це було за зниженням ціни.

Досить впевнений, що я можу це зробити, налаштовуючи catalog_category_view.xmlсвою тему і вводячи аргументи, product_list_toolbarале я просто не можу це зрозуміти. Будь-яка допомога?


2
використовуйте ці два посилання mage2.pro/t/topic/1095 та mage2.pro/t/topic/1087/2 . це допоможе тобі
Манашві Бірла

Відповіді:


24

Скопіюйте файл:

vendor / magento / module-catalog / view / frontend / layout / catalog_category_view.xml

до

app / design / frontend / {{Vender_Namespace}} / {{Theme_Name}} / Magento_Catalog / layout / catalog_category_view.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 name="category.products.list">
                <action method="setDefaultDirection">
                    <argument name="dir" xsi:type="string">desc</argument>
                </action>
            </referenceBlock>
        </referenceContainer>
        <move element="category.view.container" destination="content" before="-"/>
    </body>
</page>

Посилання, які Манашві вказують на потрібні місця в ядрі для файлів, які керують цією функціональністю, але вони не пропонують рішення. Я не знайшов цього в основному коді, тому я просто здогадався на основі коду в цьому файлі:

постачальник / magento / модуль-каталог / Блок / Продукт / Список продуктів / Toolbar.php

і використовував синтаксис в іншій конфігурації в інших .xml-файлах.

Я намагався зателефонувати $block->setDefaultDirection('desc')у файл:

vendor / magento / module-catalog / view / frontend / templates / product / list / list / toolbar / sorter.phtml

файл, але це не спрацювало. Я не простежив, чому, але використовуючи xml для встановлення за замовчуванням працював, тому я просто перейшов.


1
Просто швидке запитання @circlesix ваше рішення чудово працює, але я хотів би застосувати його лише до декількох категорій. Я думав, що мені вдасться перейти до розділу referenceContainer до розділу оновлення спеціальної макети для кожної категорії в адміністративній панелі, але це не впливає. Будь-які ідеї?
caffeinehigh

Я ще не знайшов рішення, я опублікую тут, коли зможу придумати кращий спосіб зробити це.
circleix

1
@ user1837290, ви можете просто поставити фрагмент, починаючи і закінчуючи, referenceContainerу полі "Оновлення XML-макета" в адміністраторі конкретних категорій. Поки ви не відміняєте сортування в усьому світі у своїй темі, воно повинно працювати. Пов’язано: magento.stackexchange.com/q/167048/2415
Scruffy

1
@circlesix вам потрібно вказати атрибут імені лише при посиланні на блок
Мігель Феліпе Гіллен Кало,

1
Просто хотів прокоментувати і сказати, що це все ще працює як Magento 2.3, це просто вирішило питання для мене!
Даніель Блек

5

Можна використовувати і більш коротку версію. Для конкретних категорій можна використовувати окремі файли: catalog_category_view_id_X.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>
    <referenceBlock name="category.products.list">
        <action method="setDefaultDirection">
            <argument name="dir" xsi:type="string">desc</argument>
        </action>
    </referenceBlock>
</body>
</page>

рішення (використовуючи лише блок посилань і вміст) також можна додавати до користувацького XML у категорії, якщо ви не хочете створювати файл власної компонування.
Філ Бірні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.