sortuj produkty według najnowszych, zniżek, najczęściej sprzedawanych, recenzji ”na stronie listy produktów


10

Na stronie listy produktów możemy zobaczyć sortowanie według „Pozycja, nazwa, cena” jak w domyślnym Magento.

Jak sortować według

  1. najnowsze produkty (ostatnio przesłane)
  2. Zniżka (najpierw produkty o najwyższej zniżki)
  3. Bestsellery (najpierw najlepiej sprzedawane produkty)
  4. Recenzje (najlepiej ocenione produkty wyświetlane jako pierwsze)

Daj mi znać, jeśli potrzebujesz wyjaśnień ...

Odpowiedzi:


7

dla -> Ostatnio oglądane zobacz tutaj

dla -> Sortowanie według oceny

Skopiuj plik

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

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

w list.phpznalezieniu dla tej linii

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

które będą w pobliżu, line no 86dodaj następujący kod

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

teraz skopiuj

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

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

w config.php znajdź ten kod

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

zamienić

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

- >> dla BESTSELLER

wykonaj procedurę tworzenia nazywania folderów Inchooi wewnątrz tego miejsca folderu Catalogi katalogu wewnątrz utworzyć 3 foldery Block, etca Modelw Blockdodatku Productw Productdodatku Listiw Listutworzyć plik i nazwij go jak Toolbar.phpi ad ten kod do niego

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

teraz w etcfolderze utwórz plik o nazwie config.xmli dodaj ten kod

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

Teraz Modelutwórz nazwę pliku Config.phpi dodaj ten kod.

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

również utwórz Resourcefolder w folderze Modeli Resourceutwórz Productfolder i utwórz nazwę pliku Collection.phpi dodaj następujący kod.

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

Teraz w końcu aktywuj ten moduł, app/etc/modulestworząc plik i Inchoo_Catalog.xmldodaj ten kod.

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

i SALEsugeruję wam to rozszerzenie, ponieważ nie mogę znaleźć żadnego programowego sposobu na osiągnięcie tego.


cześć, wielkie dzięki za odpowiedź, sprawdzę i powiem wkrótce ....
Baby in Magento

czy jest coś jeszcze, co muszę zrobić, aby uzyskać opcję „oceniania” w „sortuj według” na stronie listy produktów. Zrobiłem zarządzanie pamięcią podręczną i indeksem, ale opcja oceny nie wyświetla się pod: sortuj według "na stronie listy produktów.
Baby in Magento

pastebin.com/5403TsLa => list.php pastebin.com/Z7WK7C1m => config.php proszę sprawdzić powyższe pliki ....
Baby in Magento

hmm, kod działa dla mnie dobrze Nie rozumiem, co jest winą twojego
dh47

jeszcze raz to sprawdzę ....
Baby in Magento,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.