2011-09-05 128 views
0

我需要限制添加到Magento進行比較的產品數量。只想要最多4個產品進行比較。Magento產品比較限制

我想在.phtml(其中項目顯示循環是),但不知道在哪裏我應該編輯顯示消息「比較列表已滿」。任何想法?

謝謝!

回答

0

比較項目在Mage_Catalog_Product_CompareController加入,你可以看到,有事件派遣,你可以掛鉤您的觀察員,也可以通過擴展Mage_Catalog_Model_Product_Compare_List和壓倒一切的addProduct命令()或addProducts(添加自己的極限)方法,甚至使這收集類

3

我掛鉤了catalog_product_compare_add_product事件。

這裏是我的解決方案:

  1. 創建模塊。

    目錄:

    應用程序/代碼/本地/公司//這可以是任何名稱

    應用程序/代碼/本地/公司/目錄

    應用程序/代碼/本地/公司/目錄器/輔助

    應用程序/代碼/本地/公司/目錄/等

  2. 模塊配置

    創建一個文件:應用程序/代碼/本地/公司/目錄的/ 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. 助手

    創建一個文件:應用程序/代碼/本地/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. 啓用模塊

    創建文件:應用程序的/ etc /模塊/ 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個產品被刪除,並顯示好的通知。它不是完美的解決方案(因爲它在添加後刪除了產品),但它很好地完成了這項工作。

+0

謝謝。我們的代碼在第一條線上運行。 – Dolly