Comment lister les produits par ordre décroissant?

18

Cela semblait simple mais prouve le contraire - je veux juste lister tous les produits de mon magasin de haut en bas

Pour ce faire, je suis allé à:

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

Maintenant, cela trie chaque produit de bas en haut pour tous les produits - mais il ne semble pas y avoir de moyen de choisir l'ordre croissant par rapport à l'ordre décroissant.

Y a-t-il quelque chose dans la zone d'administration que je néglige ou dois-je modifier un fichier pour ce faire?

Reconstruire
la source
Si j'ai bien compris votre explication, il vous suffit de cliquer à pricenouveau sur la colonne pour trier les produits de haut en bas .
Mr_Green
Vous pouvez améliorer le tri de vos produits en utilisant ce script fmeaddons.com/magento/…

Réponses:

42

Vous ne pouvez pas modifier le sens de commande par défaut des listes de produits à partir de la configuration .

Vous pouvez cependant changer la direction à partir de la mise en page XML .

Voici quelques exemples que vous pouvez mettre dans votre fichier XML de mise en page, par exemple 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>

De plus, vous pouvez ajouter la mise en page XML en tant que conception personnalisée de votre catégorie dans le backend . Ce paramètre remplacera ce que vous avez défini dans le fichier XML:

Définir la direction de commande par défaut à l'aide de XML de conception personnalisée

Matthias Zeis
la source
6

La question est étiquetée CE 1.7.0.2 mais cette solution est utile pour ceux sur 1.9.1.1 donc je l'ajoute ici.

Nous avons eu un problème opposé où nous devions d'abord afficher les produits les moins chers lorsqu'ils étaient triés par prix. Pour la première préoccupation de l'OP, cela ne s'applique pas car dans Magento CE 1.9, il est déjà par défaut décroissant, ce qui n'est en fait pas nécessaire. La deuxième préoccupation, pour un moyen de choisir ascendant vs descendant, cela peut être fait via un fichier XML ou la mise à jour de mise en page personnalisée. Ce dernier est la solution préférée dans la plupart des cas et la plupart des gens éviteraient les tracas de FTP pour télécharger un fichier XML pour mettre à jour les paramètres.

Voici à quoi cela ressemble dans Catalogue> Gérer les catégories> Catégorie > Conception personnalisée> Mise à jour de la disposition personnalisée :

Affiche les produits les moins chers en premier, PAS les plus chers Voici le code:

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

Pour choisir croissant ou décroissant, changez simplement asc en desc .

En option, vous pouvez également modifier le prix selon le tri dont vous avez besoin. Vous pouvez le supprimer afin qu'il sera par défaut asc sur une Liste Trier par l' option qui est configurée par défaut.

Joel Karunungan
la source
3

Les solutions ci-dessus ne semblent pas faire de différence avec CE 1.8, j'ai donc dû résoudre ce problème en remplaçant la fonctionnalité de modèle de catalogue dans code / 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;
}

J'espère que cela t'aides. :-)

user3983
la source
Salut, Pouvons-nous changer l'ordre de tri actuel via le fichier toolbar.phtml ??
Jordy S Chemparathy
Dans mon cas, une catégorie montre d'abord les nouveaux produits;
Jordy S Chemparathy
3

Le xml suivant a fonctionné pour moi dans 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>

Je pensais publier car les deux solutions ci-dessus ne fonctionnaient pas pour moi dans Magento 1.8 (Communauté).

'setDefaultOrder' peut prendre n'importe quel code d'attribut, je pense, et n'est pas requis si vous souhaitez simplement utiliser la valeur par défaut de l'administrateur.

J'espère que c'est utile à quelqu'un.

mike-source
la source
1

Accédez à / app / code / core / Mage / Catalogue / Model / path et ajoutez le code ci-dessous dans Product.php

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

Vous pouvez également l'utiliser pour le poids. Écrivez simplement «poids» à la place de «prix». Pour l'ascendant, écrivez simplement «ASC» à la place de «DESC».

Sumit Mohanty
la source
ne modifiez jamais les fichiers de base.
func0der