最新消息:Excel无乱码转CSV,由于工作原因很少更新博客和回复大家的评论,非常抱歉。

Magento定义属性免运费的产品自动添加到指定目录

使用magento可以通过添加产品自定义属性为产品添加“免运费”属性,然后通过一定处理将免运费商品输出到特定目录。

在从事magento工作中,公司要求添加一个免运费的控制选项,来开关此产品的免运费状态。今天在网上找到一段代码,经过我的整理,能正常使用,也方便了那些可怜的编辑人员。我找到的内容是这样的:

Magento产品添加了个自定义属性Free Shipping(免运费)。要实现当Free shipping属性的值为YES的时候,自动把产品指定到一个叫Free Shipping的目录。

前台的list.phtml还可以处理下,使有这属性值的产品添加标识条幅。如图,效果还是挺惹人喜的。

为了以后升级不影响功能,我的处理办法是,重写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

转载请注明:嗨酷哥,有你更酷! » Magento定义属性免运费的产品自动添加到指定目录

与本文相关文章

发表我的评论

取消评论
表情 插代码

Hi,您需要填写昵称和邮箱!

  • 必填项
  • 必填项

网友评论5条  本站回复2

  1. 靠!这东东咋整啊!

    超级屌丝2012-10-29 17:07 回复
  2. 不行呀,我把代码添加到ProductController.php这个页面去报错。“增加一个方法freeShippingCategoryIdProcess”这里面报错

    magento菜鸟2012-09-11 11:55 回复
    • 你在添加代码时要认真,不是落掉符号或字符什么的。如果还不行,你就把错误发出来看看。

      hicoogle2012-09-12 16:22 回复
  3. 支持你!

    givens2012-08-16 09:39 回复
  4. :mrgreen: 看到更新,马上来支持一下。以前我做这个功能的时候,是添加了属性之后,在列表页里做了判断。也可以实现的。不过不能添加到目录里。向酷哥学习。

    小鹤哥2012-07-28 08:36 回复
    • 呵呵,我也依葫芦画瓢,我自己增加了其他功能。

      hicoogle2012-07-28 19:06 回复
      • 你好,能麻烦你教我下吗,Magento定义属性免运费的产品自动添加到指定目录—这个功能我实现不了?能麻烦你指导我一下吗?谢谢!QQ:863197742

        蓝色的忧郁2012-08-18 09:11 回复