trier les produits par les plus récents, les remises, les plus vendus, les avis "dans la liste


10

Sur la page de liste des produits, nous pouvons voir trier par "Position, nom, prix" comme dans Magento par défaut.

Comment trier par

  1. nouveaux produits (téléchargés récemment)
  2. Remise (produits avec la remise la plus élevée en premier)
  3. Best-seller (produits les plus vendus en premier)
  4. Avis (les produits les mieux notés s'affichent en premier)

Veuillez me faire savoir si vous avez besoin d'éclaircissements ...

Réponses:


7

pour -> Vu récemment voir ici

pour -> Tri par note

Copiez le fichier

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

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

à list.phptrouver pour cette ligne

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

qui sera environ line no 86ajouter le code suivant après cela

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

maintenant copiez

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

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

dans config.php trouver ce code

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

remplacer par

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

- >> pour BESTSELLER

suivez cette procédure créer un dossier de nommage Inchooet à l' intérieur de ce lieu dossier Cataloget le catalogue intérieur créer 3 dossiers Block, etcet Modelen Blockajouter Productdans Productajouter Listet Listcréer un fichier et nommez - le comme Toolbar.phpet annonce ce code dans ce

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

maintenant dans le etcdossier créez un fichier avec le nom config.xmlet ajoutez ce code

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

Maintenant, Modelcréez un nom de fichier Config.phpet ajoutez ce code.

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

créer également un Resourcedossier dans Modelet dans le Resourcedossier créer un Productdossier et créer un nom de fichier Collection.phpet ajouter le code suivant.

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

Maintenant, activez enfin ce module en allant app/etc/modulescréer un fichier Inchoo_Catalog.xmlajoutez ce code.

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

et SALEje vous propose cette extension car je ne trouve aucun moyen programmatique pour y parvenir.


salut, merci beaucoup pour la réponse, je vais vérifier et vous dire bientôt ....
Bébé à Magento

y a-t-il autre chose que je dois faire pour obtenir l'option "note" dans "trier par" dans la page de liste des produits. j'ai fait la gestion du cache et de l'index mais l'option de notation ne s'affiche pas sous: trier par "dans la page de la liste des produits.
Baby in Magento

pastebin.com/5403TsLa => list.php pastebin.com/Z7WK7C1m => config.php veuillez vérifier les fichiers ci-dessus ....
Bébé à Magento

hmm le code fonctionne bien pour moi je ne peux pas comprendre ce qui est en faute avec le vôtre
dh47

je vais le vérifier encore une fois ....
Bébé à Magento
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.