我正试图制作一个完全可定制的产品页面,然后将产品添加到购物车中。然而我正在努力为用户做一个该购物车的临时价格。
我看了购物车,但似乎找不到解决方法,我看了产品,并尝试设置一个新的产品,然后设置价格,但是一旦它被添加到购物车,它就会回到默认价格。我读过关于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时间后或订单后清除,但是这似乎不对......
另外,我在使用这种方法时遇到的第二个问题是它的速度很慢。当我将产品添加到购物车时,如果我直接进入购物车,它会显示初始价格,然后当我再次刷新时,它会转到特定的价格......。
我真正需要做的是在添加到购物车时能够更改价格,然后在订单上进行验证,就这样。有什么建议吗?
在我看来,你做的很好 SpecificPrice
而且这可能是最好的,也是最可靠的方法,不需要修改核心。但我想不通,为什么你要用这两种方法 SpecificPriceRule
和 SpecificPrice
类。我认为,使用 SpecificPrice
就足以达到目的。并展示 SpecificPrice
在购物车中尝试创建一些ajax调用来创建你的新价格,然后再将产品添加到购物车。自定义产品的工作方式是这样的,所以你可以检查它。