Magento2: Standardmäßig nach absteigendem Preis sortiert, nicht aufsteigend

11

Ok, ich habe meine Kategorien nach Preis sortiert. Magento 2 verwendet standardmäßig einen steigenden Preis. Aber ich würde es vorziehen, wenn der Preis sinkt.

Ich bin mir ziemlich sicher, dass ich dies tun kann, indem ich catalog_category_view.xmlmein Thema anpasse und ein Argument vorlege, product_list_toolbaraber ich kann es einfach nicht ganz herausfinden. Irgendeine Hilfe?

koffeinhoch
quelle
2
Verwenden Sie diese beiden Links mage2.pro/t/topic/1095 und mage2.pro/t/topic/1087/2 . es wird dir helfen
Manashvi Birla

Antworten:

24

Kopieren Sie die Datei:

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

zu

app / design / frontend / {{Vender_Namespace}} / {{Theme_Name}} / Magento_Catalog / layout / catalog_category_view.xml

in Ihr Thema und fügen Sie dies der Datei hinzu:

<?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>

Die Links, die Manashvi auf die richtigen Positionen im Kern für die Dateien verweist, die diese Funktionalität steuern, bieten jedoch keine Lösung. Ich habe dies nirgendwo im Kerncode gefunden, also habe ich nur eine Vermutung angestellt, die auf dem Code in dieser Datei basiert:

Hersteller / Magento / Modul-Katalog / Block / Produkt / Produktliste / Toolbar.php

und verwendete die Syntax in einer anderen Konfiguration in anderen XML-Dateien.

Ich habe versucht, $block->setDefaultDirection('desc')die Datei aufzurufen :

Hersteller / Magento / Modul-Katalog / Ansicht / Frontend / Vorlagen / Produkt / Liste / Symbolleiste / Sorter.phtml

Datei, aber das hat nicht funktioniert. Ich habe nicht herausgefunden, warum, aber die Verwendung der XML-Datei zum Festlegen der Standardeinstellung hat funktioniert, also bin ich einfach weitergegangen.

Kreismix
quelle
1
Nur eine kurze Frage @circlesix Ihre Lösung funktioniert hervorragend, aber ich möchte sie nur auf einige Kategorien anwenden. Ich dachte, ich könnte den Abschnitt referenceContainer im Abschnitt Benutzerdefiniertes Layout-Update für jede Kategorie im Admin-Bereich ablegen, aber dies hat keine Auswirkungen. Irgendwelche Ideen?
Koffeinhoch
Ich habe noch keine Lösung gefunden. Ich werde hier posten, wenn ich einen besseren Weg finden kann, dies zu tun.
Circelsix
1
@ user1837290, Sie können den Block einfach beginnend und endend mit referenceContainerim Feld "Layout Update XML" im Administrator Ihrer spezifischen Kategorien einfügen . Solange Sie die Sortierung in Ihrem Thema nicht global überschreiben, sollte sie funktionieren. Siehe auch
Scruffy Paws
1
@circlesix Sie müssen nur Namensattribut angeben, wenn Sie auf einen Block verweisen
Miguel Felipe Guillen Calo
1
Ich wollte nur kommentieren und sagen, dass dies ab Magento 2.3 immer noch funktioniert. Es hat das Problem nur für mich gelöst!
Daniel Black
5

Sie können auch die kürzere Version verwenden. Für bestimmte Kategorien können Sie separate Dateien verwenden: 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>
RikW
quelle
Die Lösung (die nur den Referenzblock verwendet und Inhalt enthält) kann auch zu benutzerdefiniertem XML in der Kategorie hinzugefügt werden, wenn Sie keine benutzerdefinierte Layoutdatei erstellen möchten.
Phil Birnie