ordina i prodotti più recenti, scontati, più venduti, recensioni "nella pagina dell'elenco prodotti


10

Nella pagina dell'elenco prodotti, possiamo vedere l'ordinamento per "Posizione, nome, prezzo" come in Magento predefinito.

Come ordinare per

  1. prodotti più recenti (caricati di recente)
  2. Sconto (prima i prodotti con lo sconto più alto)
  3. Best seller (prima i prodotti più venduti)
  4. Recensioni (i prodotti più votati vengono visualizzati per primi)

Per favore fatemi sapere se avete bisogno di chiarimenti ...

Risposte:


7

per -> Visualizzati di recente, vedere qui

per -> Ordinamento per valutazione

Copia il file

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

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

in list.phpcerca per questa linea

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

che sarà in giro line no 86aggiungere il seguente codice dopo

$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')

ora copia

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

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

in config.php trova questo codice

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

sostituirlo con

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

- >> per BESTSELLER

seguire questa procedura di creare una denominazione cartella Inchooe dentro quel luogo cartella Cataloge il catalogo all'interno di creare 3 cartelle Block, etce Modelin Blockaggiunta Productin Productaggiunta Liste in Listcreare un file e denominarlo come Toolbar.phpe annuncio questo codice in esso

<?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;
    }
}

ora nella etccartella creare un file con nome config.xmle aggiungere questo codice

<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>

Ora Modelcrea un nome file Config.phpe aggiungi questo codice.

<?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'))
        );
    }
}

crea anche una Resourcecartella in Modele in una Resourcecartella crea una Productcartella e crea un nome file Collection.phpe aggiungi il seguente codice.

<?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;
    }
}

Ora finalmente attiva questo modulo andando a app/etc/modulescreare un file Inchoo_Catalog.xmlaggiungi questo codice.

<?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 license@magentocommerce.com 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>

e per SALEquesto ti suggerisco questa estensione in quanto non riesco a trovare alcun modo programmatico per raggiungere questo obiettivo.


ciao, grazie mille per la risposta, controllerò e te lo dirò presto ....
Baby in Magento

c'è qualcos'altro che devo fare per ottenere l'opzione "rating" in "ordina per" nella pagina dell'elenco dei prodotti. ho gestito la cache e la gestione dell'indice ma l'opzione di valutazione non viene visualizzata sotto: ordina per "nella pagina dell'elenco prodotti.
Baby in Magento,

pastebin.com/5403TsLa => list.php pastebin.com/Z7WK7C1m => config.php per favore controlla i file sopra ....
Baby in Magento

hmm il codice funziona bene per me non riesco a capire cosa c'è di
sbagliato nel

lo controllerò ancora una volta ....
Baby in Magento,
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.