Prestashop动态定价PHP

我试图制作一个完全可定制的产品页面,然后将产品添加到购物车中。但是,我正在努力为用户为该购物车/会话定价。

我看过购物车,似乎无法在其中找到解决方案,我看过产品,尝试设置新产品,然后设置价格,但是一旦将其添加到购物车中回到默认价格。我已经读过有关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倍的时间或订单后清除,但这似乎不正确...

此方法的第二个问题是它的速度很慢。当我直接将产品添加到购物车时,如果我将其添加到购物车,它将显示初始价格,然后再次刷新时,它将显示为特定价格...

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

iCMS 回答:Prestashop动态定价PHP

我认为您在SpecificPrice上做得很好,这可能是最好且最可靠的方法,无需进行核心修改。但是我不知道为什么您同时使用SpecificPriceRuleSpecificPrice类。我认为使用SpecificPrice足以实现目标。要在购物车中显示SpecificPrice,请尝试创建一些ajax调用以创建新价格,然后再将产品添加到购物车。定制产品以这种方式工作,因此您可以对其进行检查

本文链接:https://www.f2er.com/2144370.html

大家都在问