【问题标题】:Prestashop Multistore - local store prices are overwritten with price from default shopPrestashop Multistore - 本地商店价格被默认商店的价格覆盖
【发布时间】:2017-04-13 13:42:53
【问题描述】:

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

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

示例产品:

Denmark: 99 DKK
France: 9 EUR
UK: 9 GBP

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

Denmark: 99 DKK
France: 99 EUR
UK: 99 GBP

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

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

【问题讨论】:

  • 建议:检查与产品更新相关的钩子,并确认您没有搞乱价格的模块。祝你好运
  • 感谢您的推荐。我安装了一个干净的 Prestashop,并且在这里也能看到错误 :-( 我刚刚用视频链接更新了我的问题

标签: prestashop prestashop-1.6 multistore


【解决方案1】:

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

  1. 当您在所有商店上下文中 Prestashop 处理版本时,您可以同时在所有商店中进行编辑。
  2. pricewhosale_price 是商店的关联字段。因此,如果您在 All shop context 中,您也在为所有商店编辑此值。
  3. 您可以使用以下代码来避免这种情况。但是请考虑到,如果您想同时更新所有商店的价格,则使用此代码将无法做到这一点。您只需要在单一/特定商店环境中更新价格。

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

此代码应插入Product 类中的getFieldsShop() 函数中,该类位于\classes\Product.php 之前,就在return $fields; 之前

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

祝你好运。

【讨论】:

  • 谢谢你,PixelWeb!这对我们来说是完美的解决方案!我们最终将其添加到 Products.php 覆盖文件并将税组字段添加到未设置值列表中。再次感谢您——我欠您一杯咖啡和一杯冰镇啤酒! :-)
  • 这是一个绝妙的解决方案,但是当在所有商店环境中保存产品时,组合价格仍然可以节省。如何也排除这些?
猜你喜欢
  • 2021-06-25
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2018-09-01
  • 2016-09-24
相关资源
最近更新 更多