我试图制作一个完全可定制的产品页面,然后将产品添加到购物车中。但是,我正在努力为用户为该购物车/会话定价。
我看过购物车,似乎无法在其中找到解决方案,我看过产品,尝试设置新产品,然后设置价格,但是一旦将其添加到购物车中回到默认价格。我已经读过有关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倍的时间或订单后清除,但这似乎不正确...
此方法的第二个问题是它的速度很慢。当我直接将产品添加到购物车时,如果我将其添加到购物车,它将显示初始价格,然后再次刷新时,它将显示为特定价格...
我真正需要做的就是能够在添加到购物车时更改价格,然后根据订单进行验证并保留该价格。有什么建议吗?