จัดเรียงสินค้าใหม่ล่าสุดลดราคาขายมากที่สุดบทวิจารณ์ "ในหน้ารายการผลิตภัณฑ์


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และModelในBlockเพิ่มProductในProductการเพิ่ม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 in Magento

มีอะไรอีกบ้างที่ฉันต้องทำเพื่อรับตัวเลือก "ให้คะแนน" ใน "เรียงลำดับตาม" ในหน้ารายการผลิตภัณฑ์ ฉันทำแคชและการจัดการดัชนี แต่ตัวเลือกการให้คะแนนไม่แสดงภายใต้: จัดเรียงตาม "ในหน้ารายการผลิตภัณฑ์
Baby in Magento

pastebin.com/5403TsLa => list.php pastebin.com/Z7WK7C1m => config.php โปรดตรวจสอบไฟล์ด้านบน ....
Baby in Magento

อืมรหัสทำงานได้ดีสำหรับฉันฉันไม่สามารถเข้าใจสิ่งที่เป็นความผิดของคุณ
dh47

ฉันจะตรวจสอบอีกครั้ง ....
Baby in Magento
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.