Prestashop动态定价PHP

问题描述 投票:0回答:1

我正试图制作一个完全可定制的产品页面,然后将产品添加到购物车中。然而我正在努力为用户做一个该购物车的临时价格。

我看了购物车,但似乎找不到解决方法,我看了产品,并尝试设置一个新的产品,然后设置价格,但是一旦它被添加到购物车,它就会回到默认价格。我读过关于SpecificPrice的文章,但在任何地方都找不到它的使用案例,似乎无法让它发挥作用。

我现在唯一能想到的是每次为可定制的产品制作一个新产品,然后在其被购买或X量时间后删除它,然而我只是不喜欢这个想法,因为我认为它不会有很好的规模,而且它可能会在管理面板上造成很多混乱。

我很喜欢任何帮助,你可以给我这个,如果你能指点我在正确的方向,这将是巨大的! 谢谢你的帮助

编辑。

在做了一些更多的研究后,我发现我可以通过价格规则和特定价格来实现。我用了下面的代码。

            $product_id = 1;
            $product = new Product($product_id);

            $cart = $this->context->cart;
            $cart->updateQty(1, $product_id, $product->getDefaultAttribute($product->id));
            $specific_price_rule = new SpecificPriceRule();
            $specific_price_rule->name = time();
            $specific_price_rule->id_shop = (int)$context->shop->id;
            $specific_price_rule->id_currency = 0;
            $specific_price_rule->id_country = 0;
            $specific_price_rule->id_group = 0;
            $specific_price_rule->from_quantity = 1;
            $specific_price_rule->price = 1;
            $specific_price_rule->reduction = 0;
            $specific_price_rule->reduction_tax = 0;
            $specific_price_rule->reduction_type = 'amount';
            $specific_price_rule->from = date("Y-m-d H:i:s");
            $specific_price_rule->to = date("Y-m-d").' 23:59:59';
            $specific_price_rule->add();
            $specific_price = new SpecificPrice();
            $specific_price->id_product = (int)$product_id; // choosen product id
            $specific_price->id_product_attribute = $product->getDefaultAttribute($product->id);
            $specific_price->id_cart = (int)$cart->id;
            $specific_price->id_shop = (int)$context->shop->id;
            $specific_price->id_currency = 0;
            $specific_price->id_country = 0; 
            $specific_price->id_group = 0;
            $specific_price->id_customer = 0;
            $specific_price->from_quantity = 1;
            $specific_price->price = 1;
            $specific_price->reduction_type = 'amount';
            $specific_price->reduction_tax = 1;
            $specific_price->reduction = 0;
            $specific_price->from = date("Y-m-d H:i:s");
            $specific_price->to = date("Y-m-d").' 23:59:59'; // or set date x days from now
            $specific_price->id_specific_price_rule = $specific_price_rule->id;
            $specific_price->add();

但是,当这样做的时候,它会在表格中添加一个特定的价格来进行。所以,我基本上要为每一个客户制定一个新的价格。我想我可以把它设置成在X时间后或订单后清除,但是这似乎不对......

另外,我在使用这种方法时遇到的第二个问题是它的速度很慢。当我将产品添加到购物车时,如果我直接进入购物车,它会显示初始价格,然后当我再次刷新时,它会转到特定的价格......。

我真正需要做的是在添加到购物车时能够更改价格,然后在订单上进行验证,就这样。有什么建议吗?

php prestashop prestashop-1.7 prestashop-modules
1个回答
0
投票

在我看来,你做的很好 SpecificPrice 而且这可能是最好的,也是最可靠的方法,不需要修改核心。但我想不通,为什么你要用这两种方法 SpecificPriceRuleSpecificPrice 类。我认为,使用 SpecificPrice 就足以达到目的。并展示 SpecificPrice 在购物车中尝试创建一些ajax调用来创建你的新价格,然后再将产品添加到购物车。自定义产品的工作方式是这样的,所以你可以检查它。

© www.soinside.com 2019 - 2024. All rights reserved.