ecshop自定义属性,形成自定义价格,修改购物车


需求

用户进行一连串的选择,以后产品的价格发生了变化,分支超级多,无法用自带的属性搞定了。

lib_order.php
35
 
 while ($row = $GLOBALS['db']->fetchRow($res)) 
    { 
        if($row['attr_itype']==3) 
        { 
            $attr_price = round(floatval($row['attr_price']), 2); 
            $attr .= sprintf($fmt, $row['attr_name'], $row['attr_value'], $desc[$i]); 
 
            $i++; 
        }elseif($row['attr_itype']==4){
            $attr_price = round($desc[$i]); //$descp[$i] 传过来大树的id,反推价格,目前直接用个费用来表示。输入多少钱,就是多少钱。这么处理似乎仅仅解决了展示问题。实际计算在其他地方
            $attr .= sprintf($fmt2, $row['attr_name'], $row['attr_value'],$attr_price); 
        }
        else 
        { 
            $attr_price = round(floatval($row['attr_price']), 2); 
            $attr .= sprintf($fmt2, $row['attr_name'], $row['attr_value'],$attr_price); 
        } 
    }

价格在
lib_goods.php里

942

spec_price($spec)

修改为
传入自定的树的ID,然后通过ID来读取灵活的价格

function spec_price($spec,$desc='')

951

    $add_price = intval($desc[1]);//实际运算,改成树的ID,然后去数据库匹配价格。注意价格应该用floatval 函数格式化

970

        $price = floatval($GLOBALS['db']->getOne($sql)) + $add_price;

属性计算的价格都全部加上了。

修改 lib_order.php
1150

 $spec_price             = spec_price($spec);
 $spec_price             = spec_price($spec,$desc);

1151

    $goods_price            = get_final_price($goods_id, $num, true, $spec);
    $goods_price            = get_final_price($goods_id, $num, true, $spec,$desc);

lib_common.php
2266

function get_final_price($goods_id, $goods_num = '1', $is_spec_price = false, $spec = array())
 
function get_final_price($goods_id, $goods_num = '1', $is_spec_price = false, $spec = array(),$desc = array())

2342

            $spec_price   = spec_price($spec);
            $spec_price   = spec_price($spec,$desc);

lib_order.php

1284

                $goods_price = get_final_price($goods_id, $num, true, $spec);
                $goods_price = get_final_price($goods_id, $num, true, $spec,$desc);

1302

            $goods_price = get_final_price($goods_id, $num, true, $spec);
 
            $goods_price = get_final_price($goods_id, $num, true, $spec,$desc);

结算,不用改,购物车的钱,对了,就都对了。

lib_order.php
586
order_fee

此处不用改。留个记录。

购物数量更新会出错,还原了之前的价格,先限制不能修改数量。

如果你是一名技术人员可加我QQ 2651-0442-02,如果你是java技术人还可以加入QQ群 1784-9136-0
你将得到的不仅仅是技术的交流,还有职业机会,人生解惑.
首发地址:月小升博客http://java-er.com/blog/ecshop-cart-price/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
此条目发表在 PHP 分类目录,贴了 , 标签。将固定链接加入收藏夹。
既然来了,就评论一下,不会怀孕的

ecshop自定义属性,形成自定义价格,修改购物车》有 3 条评论

  1. 很好的干货分享让我认真的读完了

  2. Odoo中文 说:

    很好的干货分享让我也认真的读完了

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">