Magento使自定义属性'免运费'的产品自动添加到指定目录
- 时间:
- 浏览:0
作者:匿名
hihi
来源:Sjolzy'blog
浏览:次
2011-7-31 14:17:51
字号:大 中 小
[摘要]使用magento如果 通过加进去去产品自定义属性为产品加进去去“免运费”属性,如果 通过一定避免将免运费商品输出到特定目录。
Magento产品加进去去了个自定义属性Free Shipping(免运费)。要实现当Free shipping属性的值为YES的如果 ,自动把产品指定到一个 多叫Free Shipping的目录。
前台还如果 避免下,使有这属性值的产品加进去去标识条幅。如图,效果还是挺惹人喜的。
我的避免方式是,重写app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php这些 文件。
在_initProductSave方式里的
/**
* Initialize product categories
*/
这些 步骤加进去去额外避免。
完全代码为:
// addEd at: 10:20 2011/7/100 by chen@sjolzy.cn
/*
$productData['free_shipping']: 21 yes 20 no
Free Shipping Specials category id: 31
*/
$ifFreeShipping = (int)$productData['free_shipping']===21?true:false;
$freeShippingCategoryId = 31;
// addEd at: 10:20 2011/7/100 by chen@sjolzy.cnif (null !== $categoryIds) {
if (empty($categoryIds)) {
$categoryIds = $ifFreeShipping?$freeShippingCategoryId:array();
}else{
$categoryIds = explode(',',$categoryIds);
$categoryIds = $this->freeShippingCategoryIdProcess($freeShippingCategoryId,$ifFreeShipping,$categoryIds);
}
$product->setCategoryIds($categoryIds);
}else{ // addEd at: 10:20 2011/7/100 by chen@sjolzy.cn
$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);
}
} // addEd at: 10:20 2011/7/100 by chen@sjolzy.cn
另外加进去去的freeShippingCategoryIdProcess方式是
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);
}
经过测试,达到预期效果,产品设置YES后自动加进去去到free shipping的目录,设置No如果 再收回。
magento下载
本文转自: Sjolzy'blog