Magento2: Default untuk mengurutkan berdasarkan harga turun tidak naik

11

Ok jadi saya punya kategori saya menyortir berdasarkan harga. Magento 2 default ini untuk harga naik. Tapi saya lebih suka harga turun.

Cukup yakin saya bisa melakukan ini dengan menyesuaikan catalog_category_view.xmltema saya dan mengajukan argumen product_list_toolbartapi saya tidak bisa mengetahuinya. Ada bantuan?

tinggi kafein
sumber
2
gunakan dua tautan ini mage2.pro/t/topic/1095 dan mage2.pro/t/topic/1087/2 . itu akan membantu Anda
Manashvi Birla

Jawaban:

24

Salin file:

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

untuk

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

ke dalam tema Anda dan tambahkan ini ke 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>

Tautan yang ditunjuk Manashvi ke lokasi yang tepat di inti untuk file yang mengontrol fungsi ini, tetapi mereka tidak memberikan solusi. Saya tidak menemukan ini di mana pun dalam kode inti jadi saya hanya menebak berdasarkan kode dalam file ini:

vendor / magento / modul-katalog / Blok / Produk / Daftar Produk / Toolbar.php

dan menggunakan sintaks dalam konfigurasi lain dalam file .xml lainnya.

Saya memang mencoba memanggil $block->setDefaultDirection('desc')file:

vendor / magento / module-catalog / view / frontend / templates / produk / daftar / toolbar / sorter.phtml

file tetapi ini tidak berhasil. Saya belum melacak alasannya, tetapi menggunakan xml untuk mengatur default berfungsi, jadi saya baru saja pindah.

circleix
sumber
1
Hanya pertanyaan singkat @circlesix solusi Anda berfungsi dengan baik, tetapi saya ingin menerapkannya hanya pada beberapa kategori. Saya pikir saya dapat memasukkan bagian ReferenceContainer ke bagian Pembaruan Tata Letak Kustom untuk setiap kategori dalam panel admin tetapi ini tidak berpengaruh. Ada ide?
caffeinehigh
Belum menemukan solusi, saya akan memposting di sini ketika saya dapat menemukan cara yang lebih baik untuk melakukan ini.
circleix
1
@ user1837290, Anda cukup meletakkan potongan dimulai dan diakhiri dengan referenceContainerbidang "Layout Update XML" di admin kategori spesifik Anda. Selama Anda tidak mengesampingkan pengurutan secara global dalam tema Anda, itu akan berfungsi. Terkait: magento.stackexchange.com/q/167048/2415
Scruffy Paws
1
@circlesix Anda hanya perlu memberikan atribut nama saat mereferensikan blok
Miguel Felipe Guillen Calo
1
Hanya ingin berkomentar dan mengatakan ini masih berfungsi pada Magento 2.3, itu baru saja menyelesaikan masalah bagi saya!
Daniel Black
5

Anda dapat menggunakan versi yang lebih pendek juga. Untuk kategori tertentu, Anda dapat menggunakan file terpisah: 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
sumber
Solusi (hanya menggunakan blok referensi dan berisi konten) juga dapat ditambahkan ke Custom XML dalam kategori jika Anda tidak ingin membuat file tata letak khusus.
Phil Birnie