Magento2: par défaut pour trier par prix décroissant non croissant

11

Ok donc j'ai mes catégories triées par prix. Par défaut, Magento 2 a un prix croissant. Mais je préférerais que ce soit par prix décroissant.

Je suis sûr que je peux le faire en personnalisant catalog_category_view.xmlmon thème et en plaçant un argument, product_list_toolbarmais je n'arrive pas à le comprendre. De l'aide?

caféinehaut
la source
2
utilisez ces deux liens mage2.pro/t/topic/1095 et mage2.pro/t/topic/1087/2 . cela vous aidera
Manashvi Birla

Réponses:

24

Copiez le fichier:

fournisseur / magento / module-catalogue / view / frontend / layout / catalog_category_view.xml

à

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

dans votre thème et ajoutez ceci au fichier:

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

Les liens que Manashvi pointe vers les bons emplacements dans le noyau pour les fichiers qui contrôlent cette fonctionnalité, mais ils ne fournissent pas de solution. Je n'ai trouvé cela nulle part dans le code principal, j'ai donc juste pris une supposition basée sur le code dans ce fichier:

vendeur / magento / module-catalogue / Block / Product / ProductList / Toolbar.php

et utilisé la syntaxe dans une autre configuration dans d'autres fichiers .xml.

J'ai essayé d'appeler $block->setDefaultDirection('desc')le fichier:

fournisseur / magento / module-catalogue / view / frontend / templates / product / list / toolbar / sorter.phtml

fichier mais cela n'a pas fonctionné. Je n'ai pas trouvé pourquoi, mais l'utilisation du xml pour définir la valeur par défaut a fonctionné, donc je viens de passer.

cerclesix
la source
1
Juste une question rapide @circlesix, votre solution fonctionne très bien, mais j'aimerais l'appliquer à seulement quelques catégories. Je pensais que je pourrais déposer la section referenceContainer dans la section Mise à jour de la mise en page personnalisée pour chaque catégorie du panneau d'administration, mais cela n'a aucun effet. Des idées?
caffeinehigh
Je n'ai pas encore trouvé de solution, je posterai ici quand je pourrai trouver une meilleure façon de le faire.
circlesix
1
@ user1837290, vous pouvez simplement mettre le morceau commençant et se terminant par referenceContainerdans le champ "Layout Update XML" dans l'administrateur de vos catégories spécifiques. Tant que vous ne remplacez pas le tri globalement dans votre thème, cela devrait fonctionner. Connexe: magento.stackexchange.com/q/167048/2415
Scruffy Paws
1
@circlesix vous avez seulement besoin de fournir un attribut de nom lors du référencement d'un bloc
Miguel Felipe Guillen Calo
1
Je voulais juste commenter et dire que cela fonctionne toujours depuis Magento 2.3, cela a juste résolu le problème pour moi!
Daniel Black
5

Vous pouvez également utiliser la version plus courte. Pour des catégories spécifiques, vous pouvez utiliser des fichiers séparés: 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
la source
La solution de (en utilisant uniquement le bloc de référence et contenant du contenu) peut également être ajoutée au XML personnalisé dans la catégorie si vous ne souhaitez pas créer un fichier de disposition personnalisé.
Phil Birnie