sắp xếp sản phẩm theo mới nhất, giảm giá, bán nhiều nhất, đánh giá "trong trang danh sách sản phẩm


10

Trên trang danh sách sản phẩm, chúng ta có thể thấy sắp xếp theo "Vị trí, tên, giá" như trong Magento mặc định.

Cách sắp xếp theo

  1. sản phẩm mới nhất (được tải lên gần đây)
  2. Giảm giá (sản phẩm giảm giá cao nhất trước)
  3. Bán chạy nhất (sản phẩm được bán nhiều nhất trước)
  4. Đánh giá (sản phẩm được đánh giá cao hiển thị đầu tiên)

Xin vui lòng cho tôi biết nếu bạn cần bất kỳ làm rõ ...

Câu trả lời:


7

cho -> Đã xem gần đây xem tại đây

cho -> Sắp xếp theo xếp hạng

Sao chép tập tin

app/code/core/Mage/Catalog/Block/Product/List.php đến

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

trong list.phptìm cho dòng này

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

mà sẽ ở xung quanh line no 86thêm mã sau đây

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

bây giờ sao chép

app/code/core/Mage/Catalog/Model/Config.php đến

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

trong config.php tìm mã này

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

thay thế bằng

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

- >> cho BESTSELLER

theo thủ tục này tạo ra một cách đặt tên thư mục Inchoovà bên trong đó diễn ra thư mục Catalogvà danh mục bên trong tạo 3 thư mục Block, etcModelTrong Blockadd Productvào Productadd ListListtạo ra một tập tin và đặt tên cho nó là Toolbar.phpvà quảng cáo mã này vào nó

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

Bây giờ trong etcthư mục tạo một tệp có tên config.xmlvà thêm mã này

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

Bây giờ trong việc Modeltạo một tên tập tin Config.phpvà thêm mã này.

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

cũng tạo Resourcethư mục trong Modelvà trong Resourcethư mục tạo Productthư mục và tạo một tên tệp Collection.phpvà thêm mã sau đây.

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

Bây giờ cuối cùng kích hoạt mô-đun này bằng cách app/etc/modulestạo một tệp Inchoo_Catalog.xmlthêm mã này.

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

SALEtôi đề nghị bạn mở rộng vì tôi không thể tìm thấy bất kỳ cách lập trình nào để đạt được điều này.


xin chào, cảm ơn rất nhiều vì đã trả lời, tôi sẽ kiểm tra và nói với bạn sớm ....
Em bé ở Magento

tôi còn phải làm gì nữa để có tùy chọn "xếp hạng" trong "sắp xếp theo" trong trang danh sách sản phẩm. tôi đã quản lý bộ nhớ cache và chỉ mục nhưng tùy chọn xếp hạng không hiển thị dưới: sắp xếp theo "trong trang danh sách sản phẩm.
Em bé trong Magento

pastebin.com/5403TsLa => list.php pastebin.com/Z7WK7C1m => config.php vui lòng kiểm tra các tệp trên ....
Em bé trong Magento

hmm mã hoạt động tốt với tôi Tôi không thể hiểu lỗi của bạn là gì
dh47

tôi sẽ kiểm tra nó một lần nữa ....
Em bé ở Magento
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.