阅读:3472回复:0
Magento定义属性免运费的产品自动添加到指定目录
使用magento可以通过添加产品自定义属性为产品添加“免运费”属性,然后通过一定处理将免运费商品输出到特定目录。
在从事magento工作中,公司要求添加一个免运费的控制选项,来开关此产品的免运费状态。今天在网上找到一段代码,经过我的整理,能正常使用,也方便了那些可怜的编辑人员。我找到的内容是这样的: Magento产品添加了个自定义属性Free Shipping(免运费)。要实现当Free shipping属性的值为YES的时候,自动把产品指定到一个叫Free Shipping的目录。 图片:free-shipping.jpg 前台的list.phtml还可以处理下,使有这属性值的产品添加标识条幅。如图,效果还是挺惹人喜的。 图片:free-shipping.jpg 为了以后升级不影响功能,我的处理办法是,重写app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php这个文件。 在_initProductSave方法里找到下面这个位置 /*** Initialize product categories*/在这里添加额外处理。 完整代码为: //add by hicoogle ,date 2012-07-27 添加免运费产品数据据处理$ifFreeShipping = $productData['is_freeshipping']==169 ? true : false; //此处的169就是属性的option值的ID$freeShippingCategoryId = 211; //此处的211 就是分类的ID号,根据自己站的情况设置。/*** Initialize product categories*/$categoryIds = $this->getRequest()->getPost('category_ids');if (null !== $categoryIds) {if (empty($categoryIds)) {$categoryIds = $ifFreeShipping ? $freeShippingCategoryId : array();}else{$categoryIds = explode(',',$categoryIds);$categoryIds = $this->freeShippingCategoryIdProcess($freeShippingCategoryId,$ifFreeShipping,$categoryIds);}$product->setCategoryIds($categoryIds);}else{$categoryIds = Mage::getResourceSingleton('catalog/product')->getCategoryIds($product);if($categoryIds){$categoryIds = is_array($categoryIds) ? $categoryIds : array($categoryIds);$categoryIds = $this->freeShippingCategoryIdProcess($freeShippingCategoryId,$ifFreeShipping,$categoryIds);$product->setCategoryIds($categoryIds);}}//end by hicoogle,date 2012-07-27 添加免运费产品数据据处理另外再增加一个方法freeShippingCategoryIdProcess /** add by hehailin ,date 2012-07-27* 返回免运费产品的目录*/protected function freeShippingCategoryIdProcess($freeShippingCategoryId,$ifFreeShipping,$categoryIds){if (!$ifFreeShipping){$k = array_search($freeShippingCategoryId, $categoryIds);if (false !== $k){unset($categoryIds[$k]);}}else{$categoryIds[] = $freeShippingCategoryId;}return implode(',', $categoryIds);}//end by hehailin ,date 2012-07-27经过测试,达到预期效果,产品设置YES后自动添加到free shipping的目录,设置No之后再取消。 代码完成后,一定要记得在magento index索引一下,否则看不到效果的。 收集于:http://down.chinaz.com/try/201107/897_1.htm |
|