php - 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 时间或订单后清除,但这似乎不正确......
我使用这种方法遇到的第二个问题是它很慢。当我将产品添加到购物车时,如果我直接进入购物车,它会显示初始价格,然后当我再次刷新时,它会转到特定价格......
我真正需要做的就是能够在添加到购物车时更改价格,然后在订单上验证并将其保留。有什么建议吗?
解决方案
在我看来,你做得很好,SpecificPrice
它可能是最好和最可靠的方法,没有核心修改。但我不明白你为什么同时使用SpecificPriceRule
和SpecificPrice
类。我认为使用SpecificPrice
就足以实现目标。并SpecificPrice
在购物车中显示尝试创建一些 ajax 调用来创建您的新价格,然后再将产品添加到购物车。定制产品以这种方式工作,因此您可以检查它
推荐阅读
- swiftui - @Published 状态没有得到更新,即使我在 init() 中调用它 - SwiftUI
- java - 如何在android studio中将代码从startActivityForResult()更改为registerForActivityResult()?
- pine-script - 松脚本 - 在蜡烛结束前关闭订单?
- c++ - 使用两个堆栈实现队列时使用 swap() STL 时出错
- ethereum - 从 Solidity 中的目录导入安全吗?
- python - 如何使用包含斜杠字符“/”的密码的电子邮件 URL
- c++ - 在一行中声明一个指向堆栈上临时缓冲区的指针?
- wordpress - 我不知道如何从 Analytics 4 的流量中排除我的访问,因为我的互联网提供商使用动态 IP
- javascript - 如何使用请求中的 json 对象
- python - 我无法使用 TkinterDnD2 运行 .py 脚本(RuntimeError: Unable to load tkdnd library)