¿Cómo listar productos en orden descendente?


18

Esto parecía simple pero está demostrando lo contrario: solo quiero enumerar todos los productos en mi tienda desde alto -> bajo

Para hacerlo, fui a:

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

Ahora, esto clasifica cada producto de menor a mayor para todos los productos, pero no parece haber una forma de elegir el orden ascendente o descendente.

¿Hay algo en el área de administración que estoy pasando por alto o tengo que modificar un archivo para hacer esto?


Si entendí su explicación correctamente, debería hacer clic pricenuevamente en la columna para ordenar los productos de mayor a menor .
Mr_Green

Puede mejorar la clasificación de sus productos utilizando este script fmeaddons.com/magento/…

Respuestas:


42

No puede cambiar la dirección de pedido predeterminada para las listas de productos desde la configuración .

Usted puede sin embargo cambiar la dirección del trazado XML .

Aquí hay algunos ejemplos que puede poner en su archivo XML de diseño, por ejemplo 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>

Además, puede agregar XML de diseño como un diseño personalizado de su categoría en el back-end . Esta configuración sobrescribirá lo que establezca en el archivo XML:

Establezca la dirección de pedido predeterminada utilizando XML de diseño personalizado


6

La pregunta está etiquetada CE 1.7.0.2 pero esta solución es útil para aquellos en 1.9.1.1, así que la estoy agregando aquí.

Tuvimos un problema opuesto en el que necesitábamos mostrar los productos más baratos primero cuando se ordenaban por precio. Para la primera preocupación del OP, esto no se aplica porque en Magento CE 1.9 ya está predeterminado a descender, por lo que en realidad no es necesario. La segunda preocupación, para una forma de elegir ascendente vs descendente, se puede hacer a través de un archivo XML o la Actualización de diseño personalizado. Esta última es la solución preferida en la mayoría de los casos y la mayoría de las personas evitarían la molestia de FTP'ing para cargar un archivo XML para actualizar la configuración.

Así es como se ve en Catálogo> Administrar categorías> Categoría > Diseño personalizado> Actualización de diseño personalizado :

Muestra primero los productos más baratos, NO los más caros Aquí está el código:

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

Para elegir ascendente vs descendente, simplemente cambie asc a desc .

Como opción, también puede cambiar el precio a la clasificación que necesita. Puede eliminarlo para que tenga un valor predeterminado de asc en cualquier Opción de listado de productos establecida por defecto.


3

Las soluciones anteriores no parecían hacer una diferencia con CE 1.8, por lo que tuve que resolver este problema anulando la funcionalidad del modelo de catálogo en 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;
}

Espero que esto ayude. :-)


Hola, ¿podemos cambiar el orden actual a través del archivo toolbar.phtml?
Jordy S Chemparathy

En mi caso, una categoría muestra nuevos productos primero;
Jordy S Chemparathy

3

El siguiente xml funcionó para mí en 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>

Pensé en publicar ya que las dos soluciones anteriores no me funcionaron en Magento 1.8 (Comunidad).

'setDefaultOrder' puede tomar cualquier código de atributo, creo, y no es necesario si solo desea usar el valor predeterminado de admin.

Espero que sea útil para alguien.


1

Vaya a / app / code / core / Mage / Catalog / Model / path y agregue el siguiente código en Product.php

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

También puede usar esto para el peso. Simplemente escriba 'peso' en lugar de 'precio'. Para ascender simplemente escriba 'ASC' en lugar de 'DESC'.


nunca cambie los archivos principales.
func0der
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.