Magento产品比较限制

时间:2011-09-05 09:15:52

标签: magento compare limit product max

我需要限制在Magento中添加的产品数量。只希望最多可以比较4种产品。

我正在考虑在.phtml(项目显示循环)中进行此操作但不知道应该在哪里编辑以显示消息“比较列表已满”。有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

我已经迷上了catalog_product_compare_add_product事件。

这是我的解决方案:

  1. 创建模块。

    目录:

    app / code / local / Company //这可以是任何名称

    应用程序/代码/本地/公司/目录

    应用程序/代码/本地/公司/目录/助手

    应用程序/代码/本地/公司/目录/等

  2. 模块配置

    创建文件:app / code / local / Company / Catalog / etc / config.xml

    文件内容:

    <?xml version="1.0"?>
    <config>
        <modules>
            <Company_Catalog>
                <version>0.1</version>
            </Company_Catalog>
        </modules>
        <frontend>
            <events>
                <catalog_product_compare_add_product>
                    <observers>
                        <company_catalog>
                            <type>singleton</type>
                            <class>Company_Catalog_Helper_Observer</class>
                            <method>limitProductCompare</method>
                        </company_catalog>
                    </observers>
                </catalog_product_compare_add_product>
            </events>
        </frontend>
    </config>
    
  3. 辅助

    创建文件:app / code / local / Company / Catalog / Helper / Observer.php

    文件内容:

    <?php
    
    class Company_Catalog_Helper_Observer extends Mage_Catalog_Helper_Data {
    
        const COMPARE_LIMIT = 4;
    
        function limitProductCompare($event) {
            if (Mage::helper('catalog/product_compare')->getItemCount()<self::COMPARE_LIMIT) return;
    
            $session = Mage::getSingleton('catalog/session');
            Mage::getSingleton('catalog/product_compare_list')->removeProduct($event->getProduct());
    
            $session->getMessages()->clear();
            $session->addNotice($this->__('You have reached the limit of products to compare. Remove one and try again.'));
        } 
    
    } 
    
  4. 启用模块

    创建文件:app / etc / modules / Company_Catalog.xml

    文件内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <config>
        <modules>
            <Company_Catalog>
                <active>true</active>
                <codePool>local</codePool>
            </Company_Catalog>
        </modules>
    </config>
    
  5. 利润!

    现在一切都应该运转正常。添加后,第5个产品被删除,并显示好的通知。它不是完美的解决方案(因为它在添加产品后会将其删除),但它可以很好地完成工作。

答案 1 :(得分:0)

比较项目已添加到Mage_Catalog_Product_CompareController中,您可以看到有调度的事件可以挂钩您的观察者,或者您可以通过扩展Mage_Catalog_Model_Product_Compare_List并覆盖addProduct()或addProducts()方法来添加您的限制,甚至可以在集合中进行此操作课程