Magento2: impostazione predefinita per ordinare in base al prezzo decrescente non crescente


11

Ok, quindi ho le mie categorie ordinate per prezzo. Per impostazione predefinita, Magento 2 ha un prezzo crescente. Preferirei che scendesse per prezzo.

Abbastanza sicuro di poterlo fare personalizzando il catalog_category_view.xmlmio tema e mettendo in discussione un argomento, product_list_toolbarma non riesco proprio a capirlo. Qualsiasi aiuto?


2
usa questi due link mage2.pro/t/topic/1095 e mage2.pro/t/topic/1087/2 . ti aiuterà
Manashvi Birla,

Risposte:


24

Copia il file:

vendor / Magento / module-catalogo / view / frontend / layout / catalog_category_view.xml

per

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

nel tuo tema e aggiungilo al file:

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

I collegamenti che Manashvi indicano le giuste posizioni nel core per i file che controllano questa funzionalità, ma non forniscono una soluzione. Non l'ho trovato da nessuna parte nel codice principale, quindi ho appena fatto un'ipotesi basata sul codice in questo file:

vendor / Magento / module-catalogo / blocchi / prodotto / ProductList / Toolbar.php

e utilizzato la sintassi in altre configurazioni in altri file .xml.

Ho provato a chiamare $block->setDefaultDirection('desc')nel file:

vendor / Magento / module-catalogo / view / frontend / templates / prodotto / list / barra / sorter.phtml

file ma questo non ha funzionato. Non ho rintracciato il perché, ma usando l'xml per impostare il default ha funzionato, quindi sono passato avanti.


1
Solo una domanda veloce @circlesix la tua soluzione funziona alla grande, ma vorrei applicarla solo a un paio di categorie. Ho pensato di poter accedere alla sezione referenceContainer nella sezione Aggiornamento layout personalizzato per ogni categoria all'interno del pannello di amministrazione, ma ciò non ha alcun effetto. Qualche idea?
caffeina,

Non ho ancora trovato una soluzione, pubblicherò qui quando posso trovare un modo migliore per farlo.
cerchi il

1
@ user1837290, puoi semplicemente inserire il blocco iniziando e terminando referenceContainernel campo "Aggiornamento XML layout" nell'amministratore delle tue categorie specifiche. Finché non si esegue l'override dell'ordinamento globale nel tema, dovrebbe funzionare. Correlati: magento.stackexchange.com/q/167048/2415
Scruffy Paws

1
@circlesix devi solo fornire l'attributo name quando fai riferimento a un blocco
Miguel Felipe Guillen Calo

1
Volevo solo commentare e dire che funziona ancora a partire da Magento 2.3, mi ha appena risolto il problema!
Daniel Black,

5

Puoi usare anche la versione più corta. Per categorie specifiche è possibile utilizzare file separati: 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>

La soluzione (usando solo il blocco di riferimento e contenendo il contenuto) può anche essere aggiunta a XML personalizzato nella categoria se non si desidera creare un file di layout personalizzato.
Phil Birnie,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.