Bagaimana cara mendaftar produk dalam urutan menurun?

18

Ini tampak sederhana tetapi membuktikan sebaliknya - Saya hanya ingin daftar semua produk di toko saya dari tinggi -> rendah

Untuk melakukannya, saya pergi ke:

Configuration -> Catalog -> Product Listing Sort by -> (I Selected) "Price"

Sekarang ini mengurutkan setiap produk dari rendah ke tinggi untuk semua produk - tetapi tampaknya tidak ada cara untuk memilih urutan naik dan turun.

Apakah ada sesuatu di area admin yang saya abaikan atau haruskah saya memodifikasi file untuk melakukan ini?

Merekonstruksi
sumber
Jika saya memahami penjelasan Anda dengan benar, Anda cukup mengklik pricekolom itu lagi untuk mengurutkan produk tinggi ke rendah .
Mr_Green
Anda dapat meningkatkan penyortiran produk Anda dengan menggunakan skrip ini fmeaddons.com/magento/…

Jawaban:

42

Anda tidak dapat mengubah arah pesanan default untuk daftar produk dari konfigurasi .

Namun Anda dapat mengubah arah dari tata letak XML .

Berikut adalah beberapa contoh yang dapat Anda masukkan ke dalam file tata letak XML Anda, misalnya local.xml:

<?xml version="1.0"?>
<layout version="0.1.0">
    <!-- Change default direction for simple searches -->
    <catalogsearch_result_index>
        <reference name="search_result_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalogsearch_result_index>

    <!-- Change default direction for advanced searches -->
    <catalogsearch_advanced_result>
        <reference name="search_result_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalogsearch_advanced_result>

    <!-- Change default direction for a category without layered navigation -->
    <catalog_category_default>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalog_category_default>

    <!-- Change default direction for a category with layered navigation -->
    <catalog_category_layered>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalog_category_layered>

    <!-- Change default direction for category with ID 3 -->
    <CATEGORY_3>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>                                   
        </reference>
    </CATEGORY_3>
</layout>

Selanjutnya Anda dapat menambahkan tata letak XML sebagai Desain Kustom kategori Anda di backend . Pengaturan ini akan menimpa apa yang Anda atur dalam file XML:

Tetapkan arah pesanan default dengan menggunakan Custom Design XML

Matthias Zeis
sumber
6

Pertanyaan ditandai CE 1.7.0.2 tetapi solusi ini bermanfaat bagi mereka yang ada di 1.9.1.1 jadi saya menambahkannya di sini.

Kami memiliki masalah yang berlawanan di mana kami harus menunjukkan produk termurah terlebih dahulu ketika diurutkan berdasarkan Harga. Untuk perhatian pertama OP, ini tidak berlaku karena di Magento CE 1.9 sudah default untuk turun sehingga ini sebenarnya tidak diperlukan. Perhatian kedua, untuk cara memilih naik vs turun, itu bisa dilakukan melalui file XML atau Pembaruan Tata Letak Kustom. Yang terakhir adalah solusi yang lebih disukai dalam banyak kasus dan kebanyakan orang akan menghindari kerumitan FTP'ing untuk mengunggah file XML untuk memperbarui pengaturan.

Begini tampilannya di Katalog> Kelola Kategori> Kategori > Desain Khusus> Pembaruan Tata Letak Kustom :

Perlihatkan produk termurah terlebih dahulu, BUKAN paling mahal Ini kodenya:

<reference name="product_list_toolbar">
    <action method="setDefaultDirection"><string>asc</string></action>
    <action method="setDefaultOrder"><string>price</string></action>
</reference>

Untuk memilih naik vs turun, cukup ubah asc ke desc .

Sebagai opsi, Anda juga dapat mengubah harga ke penyortiran yang Anda butuhkan. Anda dapat menghapusnya sehingga akan default ke bawah ke atas pada setiap Listing Produk Urutkan berdasarkan opsi yang ditetapkan sebagai default.

Joel Karunungan
sumber
3

Solusi di atas tampaknya tidak membuat perbedaan dengan CE 1.8, jadi saya harus menyelesaikan masalah ini dengan mengesampingkan fungsionalitas model katalog dalam kode / lokal / ... / Katalog / Model / Category.php

/**
 * Override category products collection
 * to sort by price descending
 *
 * @return Varien_Data_Collection_Db
 */
public function getProductCollection()
{  
    $collection = parent::getProductCollection()->setOrder('price', 'DESC');
    return $collection;
}

Semoga ini membantu. :-)

user3983
sumber
Hai, bisakah kita mengubah urutan urutan saat ini melalui file toolbar.phtml ??
Jordy S Chemparathy
Dalam kasus saya satu kategori menunjukkan produk baru terlebih dahulu;
Jordy S Chemparathy
3

Xml berikut ini berfungsi untuk saya di CE 1.8:

<layout>
    <catalog_category_default>
      <reference name="product_list_toolbar">
          <action method="setDefaultDirection"><string>asc</string></action>
          <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalog_category_default>

    <catalog_category_layered>
      <reference name="product_list_toolbar">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalog_category_layered>

    <catalogsearch_result_index>
      <reference name="search_result_list">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalogsearch_result_index>
    <catalogsearch_advanced_result>
      <reference name="search_result_list">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalogsearch_advanced_result>
</layout>

Saya pikir saya akan memposting karena kedua solusi di atas tidak bekerja untuk saya di Magento 1.8 (Komunitas).

'setDefaultOrder' dapat mengambil kode atribut apa pun yang saya pikir, dan tidak diperlukan jika Anda hanya ingin menggunakan default dari admin.

Semoga bermanfaat bagi seseorang.

sumber mike
sumber
1

Pergi ke / app / code / core / Mage / Katalog / Model / path dan tambahkan kode di bawah ini di Product.php

public function getRelatedProductCollection()
    {
$collection = $this->getLinkInstance()->useRelatedLinks()
        ->getProductCollection()
        ->setIsStrongMode();
    $collection->setProduct($this);
    $collection->setOrder('price', 'DESC');
    return $collection;
    }

Anda juga bisa menggunakan ini untuk berat badan. Cukup tulis 'bobot' sebagai ganti 'harga'. Untuk naik hanya menulis 'ASC' di tempat 'DESC'.

Sumit Mohanty
sumber
jangan pernah mengubah file inti.
func0der