Come elencare i prodotti in ordine decrescente?


18

Questo sembrava semplice, ma si sta rivelando altrimenti - voglio solo elencare tutti i prodotti nel mio negozio da Alto -> Basso

Per fare ciò, sono andato a:

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

Ora questo ordina ogni prodotto dal più basso al più alto per tutti i prodotti, ma non sembra esserci un modo per scegliere l'ordine crescente o decrescente.

C'è qualcosa nell'area di amministrazione che sto trascurando o devo modificare un file per farlo?


Se ho capito bene la tua spiegazione, dovresti semplicemente fare di pricenuovo clic sulla colonna per ordinare i prodotti dal più alto al più basso .
Mr_Green

Puoi migliorare l'ordinamento dei tuoi prodotti usando questo script fmeaddons.com/magento/…

Risposte:


42

Non è possibile modificare la direzione dell'ordine predefinita per gli elenchi di prodotti dalla configurazione .

È comunque possibile modificare la direzione dall'XML del layout .

Ecco alcuni esempi che è possibile inserire nel file XML del layout, ad esempio 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>

Inoltre, puoi aggiungere XML di layout come Design personalizzato della tua categoria nel back-end . Questa impostazione sovrascriverà ciò che hai impostato nel file XML:

Imposta la direzione dell'ordine predefinita usando Custom Design XML


6

La domanda è taggata CE 1.7.0.2 ma questa soluzione è utile per quelli su 1.9.1.1, quindi la sto aggiungendo qui.

Abbiamo riscontrato un problema opposto in cui dovevamo mostrare prima i prodotti più economici una volta ordinati per Prezzo. Per la prima preoccupazione del PO, ciò non si applica perché in Magento CE 1.9 è già impostato il valore predefinito in discesa, quindi non è effettivamente necessario. La seconda preoccupazione, per un modo di scegliere crescente o decrescente, può essere eseguita tramite un file XML o l'aggiornamento del layout personalizzato. Quest'ultima è la soluzione preferita nella maggior parte dei casi e la maggior parte delle persone eviterebbe la seccatura dell'FTP di caricare un file XML per aggiornare le impostazioni.

Ecco come appare nel Catalogo> Gestisci categorie> Categoria > Design personalizzato> Aggiornamento layout personalizzato :

Mostra prima i prodotti più economici, NON i più costosi Ecco il codice:

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

Per scegliere crescente o decrescente, basta cambiare asc in desc .

Come opzione, puoi anche cambiare il prezzo in base all'ordinamento di cui hai bisogno. È possibile rimuoverlo in modo che per impostazione predefinita ascenda a qualsiasi ordinamento elenco prodotti per opzione impostata come predefinita.


3

Le soluzioni sopra non sembravano fare la differenza con CE 1.8, quindi ho dovuto risolvere questo problema sovrascrivendo la funzionalità del modello di catalogo in codice / 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;
}

Spero che sia di aiuto. :-)


Ciao, possiamo cambiare l'attuale ordinamento tramite il file toolbar.phtml ??
Jordy S Chemparathy il

Nel mio caso una categoria mostra prima i nuovi prodotti;
Jordy S Chemparathy,

3

Il seguente XML ha funzionato per me in 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>

Ho pensato di pubblicare dal momento che entrambe le soluzioni di cui sopra non funzionavano per me in Magento 1.8 (Community).

'setDefaultOrder' può accettare qualsiasi codice di attributo che penso, e non è necessario se si desidera semplicemente utilizzare l'impostazione predefinita da admin.

Spero sia utile a qualcuno.


1

Vai su / app / code / core / Mage / Catalog / Model / path e aggiungi il codice qui sotto in Product.php

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

Puoi anche usarlo per peso. Basta scrivere "peso" al posto di "prezzo". Per salire basta scrivere "ASC" al posto di "DESC".


non modificare mai i file core.
func0der
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.