PLP頁(yè)面中的排序功能,如按照銷量排序,按照人氣排序等

1.在后臺(tái)中新建產(chǎn)品屬性salestotal用作銷量排序
2.新建Tang/ProductSales模塊
3.配置模塊的config.xml文件

<?xml version="1.0"?>
<config>

    <modules>
        <Tang_ProductSales>
            <version>0.1.0</version>
       </Tang_ProductSales>
    </modules>

    <frontend>

        <routers>
            <productsales>
                <use>standard</use>
                <args>
                    <module>Tang_ProductSales</module>
                    <frontName>productsales</frontName>
                </args>
            </productsales>
        </routers>

        <layout>
            <updates>
                <productsales>
                    <file>productsales.xml</file>
                </productsales>
            </updates>
        </layout>

    </frontend>

    <global>

        <models>
            <productsales>
                <class>Tang_ProductSales_Model</class>
                <resourceModel>productsales_resource</resourceModel>
            </productsales>
            <!-- st 數(shù)據(jù)庫(kù)資源模型配置 -->
            <productsales_resource>
                <class>Tang_ProductSales_Model_Resource</class>
                <deprecatedNode>productsales_mysql4</deprecatedNode>
                <entities>
                    <catalog_product_entity_varchar>
                        <table>catalog_product_entity_varchar</table>
                    </catalog_product_entity_varchar>
                </entities>
            </productsales_resource>
            <!-- end 數(shù)據(jù)庫(kù)資源模型配置 -->
        </models>

        <events>
            <checkout_onepage_controller_success_action>
                <observers>
                    <productsales>
                        <!--
                        此處可以model、object、singleton
                        1. model和object是等效的且它們都將使用Mage::getModel(...)方法來(lái)進(jìn)行初始化
                        2. 而singleton將使用Mage::getSingleton(...)來(lái)初始化
                        -->
                        <type>model</type>
                        <class>productsales/observer</class>
                        <method>preOrderSubmitInsertProductSales</method>
                    </productsales>
                </observers>
            </checkout_onepage_controller_success_action>
        </events>

        <helpers>
            <productsales>
                <class>Tang_ProductSales_Helper</class>
            </productsales>
        </helpers>

        <blocks>
            <productsales>
                <class>Tang_ProductSales_Block</class>
            </productsales>
        </blocks>

        <resources>
            <productsales_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </productsales_write>
            <productsales_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </productsales_read>
        </resources>

    </global>
</config>

4.配置監(jiān)聽(tīng)時(shí)間,當(dāng)提交訂單后,訂單中的產(chǎn)品銷量屬性加一

<?php
class Tang_ProductSales_Model_Observer extends  Mage_Catalog_Model_Observer
{
    public function preOrderSubmitInsertProductSales(Varien_Event_Observer $observer){
        $order = new Mage_Sales_Model_Order();
        $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); //訂單ID
        $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId); //訂單信息
        $orderItems = $order->getItemsCollection();

        foreach ($orderItems as $item) {
            //獲取指定產(chǎn)品對(duì)象
            $prcProject = Mage::getModel('catalog/product')->load($item->getProductId());
            $attrProject = Mage::getModel('eav/entity_attribute')->load('renqi','attribute_code'); //獲取指定屬性標(biāo)識(shí)碼的屬性信息
            $entypeid = $attrProject->getEntity_type_id(); //Eav類型
            $attrid = $attrProject->getAttribute_id(); //屬性ID
            $storeid = 0; //商店ID
            $entityid = $item->getProductId(); //產(chǎn)品ID
            $_product = Mage::getResourceModel('reports/product_collection')
                ->addOrderedQty()
                ->addAttributeToFilter('sku', $prcProject->getSku())
                ->setOrder('ordered_qty', 'desc')
                ->getFirstItem();
            $svalue = (int)$_product->getOrderedQty();
//            $svalue = (int)$_product->addOrderedQty() + $prcProject->getSalestotal(); //銷量累加
            if($svalue >0){
                $ifused = true;
            }else{
                $ifused = false;
            }
            Mage::getResourceSingleton('productsales/salestotal')->updProductSalesTotal($entypeid, $attrid, $storeid, $entityid, $svalue, $ifused);

        }
        return $this;
    }
}

4.對(duì)銷量屬性進(jìn)行寫入:

<?php
class Tang_ProductSales_Model_Resource_Salestotal extends Mage_Core_Model_Resource_Db_Abstract
{
    protected function _construct() {
        $this->_init("productsales/catalog_product_entity_varchar","value_id");
    }

    /**
     * 添加產(chǎn)品銷量到產(chǎn)品信息中
     * @param int $entypeid eav類型
     * @param int $attrid 屬性ID
     * @param int $storeid 商店ID
     * @param int $entityid 產(chǎn)品ID
     * @param varchar $svalue 銷量
     * @param bool $ifused 是否已存在
     * @return number
     */

    public function updProductSalesTotal($entypeid, $attrid, $storeid, $entityid, $svalue, $ifused){
        $selfread = $this->_getConnection('productsales_write');
        $table = $this->getTable('productsales/catalog_product_entity_varchar');
        //存入數(shù)組的數(shù)據(jù)
        $sdata = array("entity_type_id"=>$entypeid, 'attribute_id'=>$attrid, 'store_id'=>$storeid, 'entity_id'=>$entityid, 'value'=>$svalue);
        //查詢條件
        if($ifused){
            $swhere = " attribute_id=$attrid"." AND entity_id=$entityid";
            //執(zhí)行更新操作
            return $selfread->update($table, $sdata, $swhere);
        }else{
            //執(zhí)行插入操作
            return $selfread->insert($table, $sdata);
        }
    }
}

具體可以參考旺鋪商城的項(xiàng)目

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,539評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,939評(píng)論 25 709
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,263評(píng)論 6 342
  • 我是一名大學(xué)生,可是我并沒(méi)有覺(jué)得我的前途無(wú)量,反而我根本就不知道我以后能做什么。我們大學(xué)生大多數(shù)都只是相對(duì)于那些非...
    字墨書香閱讀 611評(píng)論 0 4
  • 故事情節(jié)順理成章的進(jìn)行著,不過(guò)還算有個(gè)小意外的結(jié)局,錢老寫書就是寫書,從不刻意用文字去討好讀者,只是沒(méi)想到最吸引我...
    塞北的南閱讀 286評(píng)論 0 1

友情鏈接更多精彩內(nèi)容