我需要限制在Magento中添加的产品数量。只希望最多可以比较4种产品。
我正在考虑在.phtml(项目显示循环)中进行此操作但不知道应该在哪里编辑以显示消息“比较列表已满”。有什么想法吗?
谢谢!
答案 0 :(得分:3)
我已经迷上了catalog_product_compare_add_product事件。
这是我的解决方案:
创建模块。
目录:
app / code / local / Company //这可以是任何名称
应用程序/代码/本地/公司/目录
应用程序/代码/本地/公司/目录/助手
应用程序/代码/本地/公司/目录/等
模块配置
创建文件: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>
辅助
创建文件: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.'));
}
}
启用模块
创建文件: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个产品被删除,并显示好的通知。它不是完美的解决方案(因为它在添加产品后会将其删除),但它可以很好地完成工作。
答案 1 :(得分:0)
比较项目已添加到Mage_Catalog_Product_CompareController中,您可以看到有调度的事件可以挂钩您的观察者,或者您可以通过扩展Mage_Catalog_Model_Product_Compare_List并覆盖addProduct()或addProducts()方法来添加您的限制,甚至可以在集合中进行此操作课程