Prestashop Multistore - 本地商店的价格被默认商店的价格覆盖

lar*_*rsd 1 prestashop prestashop-1.6 multistore

我们新开发的商店有一个严重的问题。

我们正在使用不同的货币和价格在每家商店运行多商店设置。

示例产品:

Denmark: 99 DKK
France: 9 EUR
UK: 9 GBP
Run Code Online (Sandbox Code Playgroud)

在“所有商店”模式下工作时,我们更改产品“信息”选项卡上的设置,所有商店的价格都设置为默认商店的值。保存“信息”选项卡后,价格如下:

Denmark: 99 DKK
France: 99 EUR
UK: 99 GBP
Run Code Online (Sandbox Code Playgroud)

我们发现了其他几个有同样问题的人

http://forge.prestashop.com/browse/PSCSX-8372

http://forge.prestashop.com/browse/PSCSX-4644

甚至来自 Prestashop 核心开发人员的拉取请求

https://github.com/PrestaShop/PrestaShop/pull/4601

后来他关闭了 pull,因为它引入了其他错误并引用:“......在不破坏某些东西的情况下修复某些东西越来越困难。老实说,这个补丁听起来很冒险”

这似乎是一个“已知错误”,但 Prestashop 背后的开发团队无意修复该错误。

我真诚地希望有人能够解决这个问题。

先感谢您!

更新: 我做了一个干净的商店并录制了如何显示错误的视频:https : //youtu.be/LTITadt6D-k

小智 5

朋友,真的很难找到并解决这个问题。我会尽量解释自己:

  1. 当您在所有商店上下文中时, Prestashop 处理版本就像您同时在所有商店中编辑一样。
  2. pricewhosale_price是商店的关联字段。因此,如果您在所有商店上下文中,您也正在为所有商店编辑此值。
  3. 您可以使用以下代码避免这种情况。但是请注意,如果您想同时更新所有商店的价格,则使用此代码将无法做到这一点。您必须仅在单一/特定商店上下文中更新价格。

    if (Shop::getContext() != Shop::CONTEXT_SHOP)
    {
        unset($fields['price']);
        unset($fields['wholesale_price']);
    }
    
    Run Code Online (Sandbox Code Playgroud)

这段代码应该插入到位于之前的类中的getFieldsShop()函数Product\classes\Product.phpreturn $fields;

这段代码的作用是告诉Product课堂,当您处于与单一/特定商店环境不同的商店环境中时,您不会更新多商店中的价格字段。

祝你好运。