classificar produtos por mais recentes, com desconto, mais vendidos, resenhas "na página da lista de produtos

10

Na página da lista de produtos, podemos ver a classificação por "Posição, nome, preço", como no Magento padrão.

Como classificar por

  1. produtos mais recentes (enviados recentemente)
  2. Desconto (produtos com descontos mais altos primeiro)
  3. Mais vendido (produtos mais vendidos primeiro)
  4. Comentários (produtos de alta classificação são exibidos primeiro)

Entre em contato se precisar de algum esclarecimento ...

Bebê em Magento
fonte

Respostas:

7

para -> vistos recentemente, veja aqui

para -> Classificando por classificação

Copie o arquivo

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

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

em list.phpencontrar para esta linha

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

que será line no 86adicionado adicione o seguinte código depois disso

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

agora copie

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

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

em config.php encontre esse código

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

substituir com

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

- >> para BESTSELLER

siga este procedimento, crie uma nomeação de pasta Inchooe, dentro dessa pasta, coloque Cataloge dentro do catálogo, crie 3 pastas e Block, em Adicionar , adicione e crie um arquivo e nomeie-o como e adicione esse código a eleetcModelBlockProductProductListListToolbar.php

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

agora na etcpasta crie um arquivo com nome config.xmle adicione 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>

Agora, Modelcrie um nome de arquivo Config.phpe adicione esse 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'))
        );
    }
}

Também crie uma Resourcepasta dentro Modele dentro da Resourcepasta, crie uma Productpasta e crie um nome de arquivo Collection.phpe adicione o código a seguir.

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

Agora, finalmente, ative este módulo, app/etc/modulescriando um arquivo e Inchoo_Catalog.xmladicione 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>

e, por SALEisso, sugiro essa extensão, pois não consigo encontrar nenhuma maneira programática de conseguir isso.

dh47
fonte
oi, muito obrigado pela resposta, vou verificar e dizer em breve ....
Baby in Magento
há mais alguma coisa que preciso fazer para obter a opção "classificação" em "classificar por" na página da lista de produtos. eu fiz cache e gerenciamento de índice, mas a opção de classificação não está sendo exibida em: classificar por "na página de lista de produtos.
Baby in Magento
pastebin.com/5403TsLa => list.php pastebin.com/Z7WK7C1m => config.php verifique os arquivos acima ....
Baby in Magento
hmm o código fina funciona para mim eu não consigo entender o que é a falha com seus de
dh47
vou verificá-lo mais uma vez ....
Baby in Magento