ordenar productos por nuevos, descuentos, más vendidos, reseñas "en la página de lista de productos

10

En la página de la lista de productos, podemos ver ordenar por "Posición, nombre, precio" como en Magento predeterminado.

Cómo ordenar por

  1. nuevos productos (subidos recientemente)
  2. Descuento (productos con mayor descuento primero)
  3. Best seller (productos más vendidos primero)
  4. Comentarios (los productos de alta calificación se muestran primero)

Avíseme si necesita alguna aclaración ...

Bebé en magento
fuente

Respuestas:

7

para -> Visto recientemente ver aquí

para -> Ordenar por clasificación

Copia el archivo

app/code/core/Mage/Catalog/Block/Product/List.php a

app/code/local/Mage/Catalog/Block/Product/List.php

en list.phpencontrar para esta línea

$this->_productCollection =$layer->getProductCollection();

que estará alrededor line no 86agregue el siguiente código después de eso

$this->_productCollection->joinField('rating_summary', 'review_entity_summary', 'rating_summary', 'entity_pk_value=entity_id', array('entity_type'=>1, 'store_id'=> Mage::app()->getStore()->getId()), 'left')

ahora copia

app/code/core/Mage/Catalog/Model/Config.php a

app/code/local/Mage/Catalog/Model/Config.php

en config.php busca este código

$options = array(
    'position'  => Mage::helper('catalog')->__('Position')
);

reemplazar con

$options = array(
    'position'  => Mage::helper('catalog')->__('Position'),
    'rating_summary' => Mage::helper('catalog')->__('Rating')
);

- >> para BESTSELLER

siga este procedimiento crear un nombre de carpeta Inchooy dentro de esa carpeta lugar Catalogy catálogo en el interior crea 3 carpetas Block, etcy Modelen Blockcomplemento Productde Productcomplemento Listy en Listcrear un archivo y el nombre como Toolbar.phpy ad este código en él

<?php
class Inchoo_Catalog_Block_Product_List_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar
{
    public function setCollection($collection)
    {
        parent::setCollection($collection);

        if ($this->getCurrentOrder()) {
            if($this->getCurrentOrder() == 'qty_ordered') {
                $this->getCollection()->getSelect()
                     ->joinLeft(
                            array('sfoi' => $collection->getResource()->getTable('sales/order_item')),
                             'e.entity_id = sfoi.product_id',
                             array('qty_ordered' => 'SUM(sfoi.qty_ordered)')
                         )
                     ->group('e.entity_id')
                     ->order('qty_ordered ' . $this->getCurrentDirection());
            } else {
                $this->getCollection()
                     ->setOrder($this->getCurrentOrder(), $this->getCurrentDirection())->getSelect();
            }
        }

        return $this;
    }
}

ahora en la etccarpeta crea un archivo con nombre config.xmly agrega este código

<config>
    <modules>
        <Inchoo_Catalog>
            <version>0.1.0</version>
        </Inchoo_Catalog>
    </modules>
    <global>
        <blocks>
            <catalog>
                <rewrite>
                    <product_list_toolbar>Inchoo_Catalog_Block_Product_List_Toolbar</product_list_toolbar>
                </rewrite>
            </catalog>
        </blocks>
        <models>
            <catalog>
                <rewrite>
                    <config>Inchoo_Catalog_Model_Config</config>
                </rewrite>
            </catalog>
            <catalog_resource>
                <rewrite>
                    <product_collection>Inchoo_Catalog_Model_Resource_Product_Collection</product_collection>
                </rewrite>
            </catalog_resource>
        </models>
    </global>
</config>

Ahora Modelcree un nombre de archivo Config.phpy agregue este código.

<?php class Inchoo_Catalog_Model_Config extends Mage_Catalog_Model_Config
{
    public function getAttributeUsedForSortByArray()
    {
        return array_merge(
            parent::getAttributeUsedForSortByArray(),
            array('qty_ordered' => Mage::helper('catalog')->__('Sold quantity'))
        );
    }
}

también crear Resourcecarpeta en Modely en Resourcecarpeta crear Productcarpeta y crear un nombre de archivo Collection.phpy agregar el siguiente código.

<?php
class Inchoo_Catalog_Model_Resource_Product_Collection extends Mage_Catalog_Model_Resource_Product_Collection
{
    protected function _getSelectCountSql($select = null, $resetLeftJoins = true)
    {
       $this->_renderFilters();
       $countSelect = (is_null($select)) ?
           $this->_getClearSelect() :
           $this->_buildClearSelect($select);

       if(count($countSelect->getPart(Zend_Db_Select::GROUP)) > 0) {
           $countSelect->reset(Zend_Db_Select::GROUP);
       }

       $countSelect->columns('COUNT(DISTINCT e.entity_id)');
       if ($resetLeftJoins) {
           $countSelect->resetJoinLeft();
       }
       return $countSelect;
    }
}

Ahora finalmente active este módulo yendo a app/etc/modulescrear un archivo Inchoo_Catalog.xmlagregue este código.

<?xml version="1.0"?>
<!--
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE_AFL.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/afl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to [email protected] so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magentocommerce.com for more information.
 *
 * @category    Mage
 * @package     Mage_Connect
 * @copyright   Copyright (c) 2014 Magento Inc. (http://www.magentocommerce.com)
 * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 */
-->
<config>
    <modules>
        <Inchoo_Catalog>
            <active>true</active>
            <codePool>community</codePool>
            <depends />
        </Inchoo_Catalog>
    </modules>
</config>

y SALEle sugiero esta extensión ya que no puedo encontrar ninguna forma programática para lograr esto.

dh47
fuente
hola, muchas gracias por responder, lo revisaré y te diré pronto ...
Bebé en Magento
¿Hay algo más que deba hacer para obtener la opción "calificación" en "ordenar por" en la página de la lista de productos. hice la gestión de caché e índice, pero la opción de calificación no se muestra en: ordenar por "en la página de lista de productos.
Bebé en Magento
pastebin.com/5403TsLa => list.php pastebin.com/Z7WK7C1m => config.php por favor revise los archivos de arriba ....
Bebé en Magento
hmm, el código funciona bien para mí No puedo entender qué es lo que tiene el tuyo
dh47
Lo comprobaré una vez más ...
Bebé en Magento