сортувати продукцію за найновішими, знижками, найбільш проданими, оглядами "на сторінці списку товарів


10

На сторінці списку продуктів ми можемо побачити сортування за "Позицією, іменем, ціною", як у Magento за замовчуванням.

Як сортувати за

  1. новітні продукти (завантажено нещодавно)
  2. Знижка (найперша знижка на продукти)
  3. Бестселлер (найперше продаються товари)
  4. Відгуки (перші продукти відображаються першими)

Будь ласка, дайте мені знати, якщо вам потрібні роз'яснення ...

Відповіді:


7

для -> Нещодавно переглянуті дивіться тут

для -> Сортування за рейтингом

Скопіюйте файл

app/code/core/Mage/Catalog/Block/Product/List.php до

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

в list.phpпошуку для цього рядка

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

який буде навколо, line no 86додайте наступний код після цього

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

тепер скопіюйте

app/code/core/Mage/Catalog/Model/Config.php до

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

у config.php знайдіть цей код

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

замінити

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

- >> для BESTSELLER

виконайте цю процедуру, створіть назву папки, Inchooі всередині цього місця папки Catalogта всередині каталогу створіть 3 папки Block, etcа ModelIn Blockadd Productin Productadd Listі Listстворіть файл та назвіть його як Toolbar.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;
    }
}

тепер у etcпапці створіть файл з ім'ям config.xmlта додайте цей код

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

Тепер Modelстворіть назву файлу Config.phpта додайте цей код.

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

також створіть Resourceпапку в папці Modelта в Resourceпапці створіть Productпапку та створіть назву файлу Collection.phpта додайте наступний код.

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

Тепер остаточно активуйте цей модуль, app/etc/modulesстворивши файл, Inchoo_Catalog.xmlдодавши цей код.

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

і тому SALEя пропоную вам це розширення, оскільки я не можу знайти жодного програмного способу досягти цього.


привіт, велике спасибі за відповідь, я перевірю і скажу вам незабаром ....
Дитина в Мадженто

чи є ще щось, що мені потрібно зробити, щоб отримати "рейтинг" на "сортувати за" на сторінці списку продуктів. я кешував кеш і індекс, але параметр рейтингу не відображається в розділі: сортувати за "на сторінці списку товарів.
Baby в Magento

pastebin.com/5403TsLa => list.php pastebin.com/Z7WK7C1m => config.php, будь ласка, перевірте вище файли ....
Дитина в Магенто

хм, код працює добре для мене, я не можу зрозуміти, в чому винна ваша
проблема

я ще раз перевірю ....
Дитина в Магенто
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.