the Requirement:
there is a visual service item in cart,
every time change relation product , the service item will be change qty
so add a Magento Observer model to approach it.
here is some content in the config.xml :
<global> <helpers> <mycheckout> <class>Bysoft_Mycheckout_Helper</class> </mycheckout> </helpers> <models> <mycheckout> <class>Bysoft_Mycheckout_Model</class> </mycheckout> </models> <resources> <bysoft_mycheckout_setup> <setup> <module>Bysoft_Mycheckout</module> <class>Mage_Sales_Model_Mysql4_Setup</class> </setup> </bysoft_mycheckout_setup> </resources> <events> <checkout_cart_save_before> <!-- identifier of the event we want to catch --> <observers> <checkout_cart_save_before_handler> <!-- identifier of the event handler --> <type>model</type> <!-- class method call type; valid are model, object and singleton --> <class>mycheckout/observer</class> <!-- observers class alias --> <method>changeServiceItemQty</method> <!-- observer's method to be called --> <args></args> <!-- additional arguments passed to observer --> </checkout_cart_save_before_handler> </observers> </checkout_cart_save_before> </events> </global>
PHP Model Class:
<?php class Bysoft_Mycheckout_Model_Observer { public function changeServiceItemQty(Varien_Event_Observer $observer) { $event = $observer->getEvent(); $cart = $event->getCart(); //检测安心厨房商品总价 $semi_total = 0; $items= $cart->getQuote()->getAllItems(); foreach ($items as $item) { $productId = $item->getProduct()->getId(); $item_product = Mage::getModel('catalog/product')->load($productId); $attributeSetModel = Mage::getModel("eav/entity_attribute_set"); $attributeSetModel->load($item_product->getAttributeSetId()); $attributeSetName = $attributeSetModel->getAttributeSetName(); if ($attributeSetName == 'Semi Cooked' && $item->getData('product_type') == 'bundle') { $semi_total += $item->getRowTotalInclTax(); } } //检测服务item是否存在 $item_exists = false; $item_exists_id = false; $item_exists_sku = false; $cartHelper = Mage::helper('checkout/cart'); foreach ($items as $item) { $productId = $item->getProduct()->getId(); $item_product = Mage::getModel('catalog/product')->load($productId); $attributeSetModel = Mage::getModel("eav/entity_attribute_set"); $attributeSetModel->load($item_product->getAttributeSetId()); $attributeSetName = $attributeSetModel->getAttributeSetName(); if ($attributeSetName == 'Chef Catering Services') { $item_exists = true; $item_exists_id = $item->getId(); $item_exists_sku = $item_product->getSku(); //更新已存在服务数量 $item->setQty(ceil(0.3*$semi_total)); break; } } //如果semi cooked总金额小于1000. 将服务item 删除 if ($semi_total < 1000 && $item_exists) { foreach ($items as $item) { $productId = $item->getProduct()->getId(); $item_product = Mage::getModel('catalog/product')->load($productId); $attributeSetModel = Mage::getModel("eav/entity_attribute_set"); $attributeSetModel->load($item_product->getAttributeSetId()); $attributeSetName = $attributeSetModel->getAttributeSetName(); if ($attributeSetName == 'Chef Catering Services') { $itemId = $item->getItemId(); $cartHelper->getCart()->removeItem($itemId); } } } } }
相关推荐
<class>YourNamespace_YourModule_Model_Observer</class> <method>customerLoginRedirect</method> </yourmodule_customer_login> </observers> </customer_login> </events> </frontend> ``` 3. **编写...
$this->_addContent($this->getLayout()->createBlock('core/text_list', 'customaction_content')); $this->renderLayout(); } } ``` `_setActiveMenu`方法用于设置当前激活的菜单项,这将在页面中高亮显示。`_...
<use>standard</use> <args> <module>MyCompanyName_HelloWorld</module> <frontName>helloworld</frontName> </args> </helloworld> </routers> </frontend> ``` 5. **创建控制器** 在`MyCompanyName/...
<block type="catalog/product_new" name="home.catalog.product.new" alias="product_new" template="catalog/product/new.phtml" after="cms_page"> <action method="addPriceBlockType"> <type>bundle</type> ...
《IWD Magento 2 Checkout Suite Pro 1.6.0:优化支付流程的全面解析》 在电商领域,用户体验是决定商家成功与否的关键因素之一,尤其是支付环节。Magento作为全球领先的开源电商平台,其扩展库中有一款名为“IWD ...
Magento是知名的开源电子商务平台,以其强大的功能和高度的可定制性而受到许多商家的喜爱。Memcached则是一种高性能的分布式内存对象缓存系统,常用于缓解数据库负载,提高网站性能。当我们谈论"Magent Memcached...
【深入理解Magento——配置系统详解】 Magento是一款强大的开源电子商务平台,其配置系统是其核心组成部分,被誉为Magento的心脏。这个系统以XML的形式动态生成配置,掌控着模块、模型、类、模板等所有组件的行为。...
<use>core_setup</use> </connection> </helloworld_setup> <helloworld_write> <connection> <use>core_write</use> </connection> </helloworld_write> <helloworld_read> <connection> <use>core_read...
<action method="addItem"><type>skin_css</type><name>css/styles-ie.css</name><params/><if>lt IE 8</if></action> <action method="addItem"><type>skin_js</type><name>js/ie6.js</name><params/><if>lt IE 7...
### Magento深入理解——强大配置系统解析 #### 一、引言 Magento是一款极其灵活且功能丰富的电子商务平台,其核心竞争力之一在于其强大的配置系统。这一系统不仅为开发者提供了极高的定制化能力,还确保了平台的...
Magento 是一个强大的开源电子商务平台,它的模块化设计是其核心特色之一。Magento 的模块开发是扩展和自定义 Magento 功能的基础。在这个过程中,理解和掌握 Magento 的配置系统至关重要。 Magento 的配置系统采用...
### Magento模块开发知识点详解 #### 1. Magento配置系统概述 Magento的配置系统是其核心组成部分,它像心脏一样支撑着整个Magento框架的运行。配置系统几乎管理着所有Magento架构组件,包括模块(module)、模型...
Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News') ); } // 其他逻辑 } } ``` #### 六、总结 以上步骤详细介绍了如何从零开始构建一个Magento后台模块。需要注意的是...
<script type="text/x-magento-init"> { "[data-zoom-role=zoom]":{ "selectors":{ "image":"[data-zoom-role=zoom-image]", "imageContainer":"[data-zoom-role=gallery-base-image-container]", "zoomInner":...
Jbh 路由器,您在 Magento 上的路由用它静态网址网址: ...jbh> < my> < type>static</ type> < route>foo.html</ route> < routers> < foo> < use>standard</ use> < args>
magento one page checkout 插件 支持magento 1.9.3.2,亲测可用 官方链接:https://www.iwdagency.com/extensions/one-step-page-checkout.html
其中,`$this->helper('sales')->__('Product Image')`表示调用`sales`模块的辅助类,并使用`__()`函数获取翻译后的字符串“Product Image”。 ##### 2.2 `renderer/default.phtml` 文件解析 此文件负责渲染每个...