Jak wyświetlić listę produktów w kolejności malejącej?


18

To wydawało się proste, ale okazuje się inaczej - chcę tylko wymienić wszystkie produkty w moim sklepie od wysokiego -> niskiego

Aby to zrobić, poszedłem do:

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

Teraz sortuje każdy produkt niskiego do wysokiego dla wszystkich produktów - ale wydaje się, że nie ma sposobu na wybór kolejności rosnącej lub malejącej.

Czy w obszarze administratora jest coś, co przeoczam, czy muszę zmodyfikować plik, aby to zrobić?


Jeśli dobrze zrozumiałem twoje wyjaśnienie, po prostu kliknij pricekolumnę ponownie, aby posortować produkty od najwyższej do najniższej .
Mr_Green

Możesz poprawić sortowanie swoich produktów za pomocą tego skryptu fmeaddons.com/magento/…

Odpowiedzi:


42

Nie można zmienić domyślnego kierunku zamówienia dla list produktów z konfiguracji .

Państwo może jednak zmienić kierunek z układu XML .

Oto kilka przykładów, które możesz umieścić w pliku XML układu, np . 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>

Ponadto możesz dodać układ XML jako projekt niestandardowy swojej kategorii w backend . To ustawienie zastąpi to, co ustawiłeś w pliku XML:

Ustaw domyślny kierunek zamówienia za pomocą Custom Design XML


6

Pytanie jest oznaczone jako CE 1.7.0.2, ale to rozwiązanie jest przydatne dla osób w wersji 1.9.1.1, więc dodam je tutaj.

Mieliśmy odwrotny problem, gdy najpierw musieliśmy pokazać najtańsze produkty posortowane według ceny. Jeśli chodzi o pierwszą kwestię PO, nie dotyczy to, ponieważ w Magento CE 1.9 domyślnie już zstępuje, więc tak naprawdę nie jest potrzebne. Drugi problem dotyczy sposobu wyboru rosnącej lub malejącej, można to zrobić za pomocą pliku XML lub niestandardowej aktualizacji układu. To drugie jest preferowanym rozwiązaniem w większości przypadków i większość osób uniknęłoby kłopotów z FTP'em w celu przesłania pliku XML w celu aktualizacji ustawień.

Oto jak to wygląda w Katalogu> Zarządzaj kategoriami> Kategoria > Projekt niestandardowy> Aktualizacja układu niestandardowego :

Najpierw pokazuje najtańsze produkty, NIE najdroższe Oto kod:

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

Aby wybrać rosnąco vs zstępującej, wystarczy zmienić ASC do desc .

Opcjonalnie możesz również zmienić cenę na potrzebne sortowanie. Możesz go usunąć, aby domyślnie ustalał w dowolnej Sortowanie listy produktów według opcji skonfigurowanej jako domyślna.


3

Powyższe rozwiązania nie wydają się mieć znaczenia w CE 1.8, więc musiałem rozwiązać ten problem, zastępując funkcjonalność modelu katalogu w kodzie / local /.../ Catalog / 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;
}

Mam nadzieję że to pomoże. :-)


Cześć, Czy możemy zmienić bieżącą kolejność sortowania za pomocą pliku toolbar.phtml?
Jordy S Chemparathy

W moim przypadku jedna kategoria pokazuje najpierw nowe produkty;
Jordy S Chemparathy

3

Następujący xml działał dla mnie w 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>

Pomyślałem, że opublikuję, ponieważ oba powyższe rozwiązania nie działały dla mnie w Magento 1.8 (Społeczność).

„setDefaultOrder” może przyjmować dowolny kod atrybutu, jak sądzę, i nie jest wymagany, jeśli chcesz tylko użyć domyślnego kodu administratora.

Mam nadzieję, że komuś się przyda.


1

Przejdź do / app / code / core / Mage / Catalog / Model / path i dodaj poniższy kod w Product.php

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

Możesz również użyć tego do wagi. Wystarczy wpisać „waga” zamiast „cena”. Aby wznieść się, po prostu napisz „ASC” zamiast „DESC”.


nigdy nie zmieniaj podstawowych plików.
func0der
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.