簡體   English   中英

Prestashop 動態定價 PHP

[英]Prestashop Dynamic Pricing 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 時間后或在訂購后清除,但這似乎不對...

我對這種方法的第二個問題是它很慢。 當我將產品添加到購物車時,如果我直接將 go 放入購物車,它會顯示初始價格,然后當我再次刷新時,它會顯示具體價格...

我真正需要做的就是能夠在添加到購物車時更改價格,然后在訂單上進行驗證並保留它。 有什么建議嗎?

對於遇到類似問題的任何人,請查看本指南https://www.prestashop.com/forums/topic/549666-guide-the-new-customization-system-in-prestashop-17/

prestashop 1.7 中的自定義系統支持像組合一樣添加價格和重量影響。 因此,您可以向購物車添加自定義項並為其指定價格以影響購物車總數。

在我看來,您使用SpecificPrice做得很好,它可能是沒有核心修改的最好和最可靠的方法。 但我不明白你為什么同時使用SpecificPriceRuleSpecificPrice類。 我認為使用SpecificPrice就足以實現目標。 並在購物車中顯示SpecificPrice嘗試創建一些 ajax 調用以在將產品添加到購物車之前創建新價格。 定制產品以這種方式工作,因此您可以檢查它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM