Magento Open Source2.4.5发行说明

Magento Open Source介绍了对平台质量、支付方法、GraphQL缓存性能和可访问性的改进。 其中包括对集成的Google模块的更新。

此版本包括290多项质量修复和增强功能。

NOTE
Adobe Commerce和Magento Open Source版本可能包含向后不兼容的更改(BIC)。 要查看与向后不兼容的更改,请参阅 BIC参考. 有关主要向后不兼容问题的说明,请参见 BIC重点. 并非所有发行版本都引进了主要BIC。

其他发行信息

虽然这些功能的代码与Magento Open Source核心代码的季度发布捆绑在一起,但其中几个项目也单独发布。 每个项目的文档中都提供了特定于项目的单独发行信息,其中记录了这些项目的错误修复。

Magento Open Source2.4.5亮点

在此版本中查找以下要点。

安全性增强

此版本包括20项安全修复和平台安全改进。 此安全修复程序已回溯到Magento Open Source2.4.4-p1和Magento Open Source2.3.7-p4。

到目前为止,尚未发生与这些问题相关的已确认攻击。 但是,可能会利用某些漏洞访问客户信息或接管管理员会话。 这些问题中的大多数要求攻击者首先获得对管理员的访问权限。 因此,我们提醒您采取一切必要步骤保护您的管理员,包括但不限于以下工作:

  • IP 列入允许列表
  • 双重身份验证
  • 使用VPN
  • 使用唯一位置,而不是 /admin
  • 良好的密码卫生

请参阅 Adobe安全公告 以获取有关这些已修复问题的最新讨论。

其他安全增强功能

此版本的安全改进改进了与最新安全最佳实践的符合性,包括:

  • reCAPTCHA支持已添加到愿望清单共享、新建客户帐户和礼品卡表单中。

  • ACL资源已添加到清单。

  • 增强了清单模板的安全性。

  • MaliciousCode 筛选器已升级为使用 HtmlPurifier 库。

平台增强功能

Magento Open Source2.4.5现在支持

  • Composer 2.2

  • TinyMCE (5.10.2)。 早期版本的TinyMCE(v5.9.2或更早版本)允许在更新巧尽心思构建的URL或具有巧尽心思构建的URL的图像时执行任意JavaScript。

  • jQueryUI (1.13.1)

  • PHPStan (^1.5.7带约束) GitHub-35315

DHL集成模式已从v6.0更新到v6.2。此升级不会导致产品行为发生变化。

过期的JavaScript库已更新为其最新版本,并且已删除过时的依赖项。 这些更改向后兼容。

编辑器依赖项更新

以下编辑器依赖项已更新到带有约束的最新版本:

  • colinmollenhour/credis (1.13.0)
  • guzzlehttp/guzzle (^7.4.2)
  • laminas/laminas-captcha (已更新,带有约束^2.12)
  • laminas/laminas-db (^2.15.0)
  • laminas/laminas-di (^3.7.0)
  • laminas/laminas-escaper (~2.10.0)
  • laminas/laminas-eventmanager (^3.5.0)
  • laminas/laminas-feed (^2.17.0)
  • laminas/laminas-mail (^2.16.0)
  • laminas/laminas-mvc (^3.3.3)
  • laminas/laminas-server (^2.11.1)
  • laminas/laminas-servicemanager (^3.11.0)
  • laminas/laminas-validator (^2.17.0)
  • league/fly (2.4.3)
  • monolog/monolog (^2.5)
  • phpmd/phpmd (^2.12.0)
  • phpstan/phpstan (^1.5.7)
  • phpunit/phpunit (~9.5.20)
  • php-cs-fixer (^3.4.0)
  • webonyx/graphql-php (14.11.6)

laminas/laminas-sessionlaminas/laminas-text、和 laminas/laminas-view 已移除依赖项。

其他升级和更换

  • DHL集成模式已从v6.0更新到v6.2。

  • USPS装运的默认网关URL已更新为使用 https 而不是 http.

  • Froogaloop 已将Vimeo库替换为 Player.js 库(2.16.4)。

  • grunt-eslint (NPM)库已升级到最新版本。

  • jQuery Storage 库已替换为 julien-maurel/js-storage.

  • php-cs-fixerphpcs 静态代码分析工具现在与PHP 8.x兼容。

  • glob.js 依赖项(已升级,但有约7.2.0的限制)

  • serve-static.js 依赖项(已升级,但约束条件为~1.14.2)

  • underscore.js 依赖性(NPM) (1.14.2)

  • moment-timezone-with-data.js (0.5.34)

  • jquery/jquery-cookie 已替换为 js-cookie/js-cookie.

  • jarallax.jsjaralax-video.js 更新了库以使用最新版本的Vimeo REST API。

辅助功能更新

此版本的重点在于在Venia(PWA)上创建更易感知、可操作、可理解和强大的店面体验。 这些增强功能包括:

  • 搜索结果摘要信息现在向屏幕阅读器用户公布
  • 现在,当加载新页面视图时,将通知屏幕阅读器
  • 对比度和键盘辅助功能已得到改进

Google Analytics

Google通过与GTag集成,更新了Web应用程序中AdWords和Analytics的跟踪和集成机制。 将Google功能集成到网站页面中,增加了通过Google服务跟踪和管理内容的机会。 Adobe Commerce有一组内置模块,包括Google AdWords、Analytics、Optimizer和TagManager,它们利用以前的API与Google服务集成。 在此版本中,我们使用GTag方法重新实现了此集成​。 请参阅 从analytics.js迁移到gtag.js (Universal Analytics).

GraphQL

GraphQL性能增强包括:

  • 开发人员和管理员在部署或更改生产环境中的属性时,可以更快地重建统一店面GraphQL架构。 如果必须出于任何原因重建GraphQL架构,购物者还会体验到显着加快的页面加载速度。

  • 添加了通过在GraphQL API中使用JSON Web令牌(JWT)来使用授权令牌的过期日期/时间的功能。

  • bin/magento config:set graphql/session/disable 1 命令允许商家完全禁止为所有GraphQL操作创建会话Cookie。 默认情况下,应用程序开源会创建这些Cookie并依赖它们进行授权,这会影响性能。 将来,我们建议使用令牌作为授权GraphQL请求的唯一形式。 我们不建议单独使用会话Cookie或将其与授权令牌结合使用。 请参阅 GraphQL Authorization.

  • 现在,只有在需要时才会使用类代理在GraphQL操作中启动会话Cookie。

  • 会话使用情况已从 http GraphQL中的标头处理器,例如商店、客户或货币。

请参阅 GraphQL开发人员指南 以了解有关这些增强功能的详细信息。

库存

增强了清单模板的安全性。

页面生成器

Page Builder v.1.7.2与Magento Open Source2.4.5兼容。

Page Builder列布局包括以下增强功能:

  • 列现在已公开,允许用户控制店面上的列设置。

  • 列大小调整现在支持由用户操作触发的换行。

支付

Apple Pay现在可供运行启用了Payment Services的部署的所有商户使用。 此付款方法不要求购物者输入其信用卡或借记卡详细信息。 Apple Pay可在产品详细信息页面、迷你购物车、购物车和结帐工作流中找到。 商家可以启用此功能。

PayPal

  • 西班牙和意大利的商家现在可以提供PayPal Pay Later给购物者。

  • 现在,管理员可以在结帐、迷你图、购物车和产品页面中预览PayPal、信用和稍后支付按钮。 预览会显示这些按钮在店面中启用和呈现时的外观。

Braintree

  • Braintree已终止了KOUNT欺诈保护集成。 该代码已从Magento Open Source代码库中移除。

  • 始终请求3DS 选项已添加至Admin。

PWA Studio

PWA Studiov.12.5.x与Magento Open Source2.4.5兼容。

此版本的新增功能包括:

  • 购物者行为数据是为Web分析服务在PWA Studio店面收集的。 商家现在可以根据需要订阅和扩展这些活动。

  • 商家现在可以从管理员(Google Tag Manager)中选择要部署的服务。

有关增强功能和错误修复的信息,请参阅 PWA Studio版本. 请参阅 版本兼容性 有关PWA Studio版本及其兼容的Magento Open Source核心版本的列表。

修复的问题

我们已在Magento Open Source2.4.5核心代码中修复了数百个问题。

安装、升级、部署

  • 现在,您可以重命名数据修补程序,并将旧类名作为别名添加到 patch_list 数据库表。 现在,Magento Open Source在应用补丁程序之前会检查数据库中是否已存在数据补丁程序别名。 以前,在这些情况下,applicationOpen Source会引发错误。
  • 当您尝试从管理员将管理员URL更改为自定义URL时,Magento Open Source不再引发异常。 以前,在更改管理员URL后,您无法登录。 GitHub-35416
  • 商家现在可以成功地从带Klarna的Magento Open Source2.4.2部署升级到Magento Open Source2.4.3。 GitHub-33760
  • Magento Open SourceAnalytics的路径不再进行硬编码。 以前,当一台服务器上安装了多个Magento Open Source实例时,此硬编码路径会导致冲突。 GitHub-29373

辅助功能

  • 购物袋 按钮现在提供其状态的编程或文本指示。 屏幕阅读器用户将收到通知:单击此按钮将展开其他内容,或者相关内容已展开或折叠。 以前,此按钮不提供其状态的编程或文本指示。
  • 付款信息信用卡选项文本元素或文本图像现在符合WCAG 2.0的要求,标准文本的最低颜色对比度为4.5:1,即18pt (24px)或14pt (19px)(如果已加粗)。 以前,它们不满足预期的对比度。
  • 通讯簿 > 通信 > 帐户信息 自定义焦点指示器现在提供的对比度至少为背景颜色的3:1。
  • 筛选排序 按钮文本现在符合WCAG 2.0要求的最低颜色对比率为4.5:1(标准文本为18pt (24px)或14pt (19px)(如果已加粗))。 以前,轮播的导航按钮不符合这些最低对比度要求。
  • 当导航到Venia页眉和页脚时,屏幕阅读器仅会朗读“Venia”一词一次。 以前,同一个词连续两次被宣布。
  • 触发下拉列表的按钮现在向屏幕阅读器提供信息,指示其展开或折叠状态以及可访问名称。
  • 在呈现新页面视图时,将通知屏幕阅读器用户。 以前,当页面标题发生更改时,不会宣布标题发生了更改。

Adobe Stock

  • 用户现在可以成功注销Adobe Stock。

捆绑产品

  • 您现在可以使用 PUT /V1/products 端点可更新特定网站的产品价格属性。 以前,如果为特定商店视图覆盖了某些产品属性,则无法在同一商店视图中更新该产品的价格属性。
  • 当应用产品子选择规则时,Magento Open Source现在可以正确计算捆绑产品的购物车总计。

缓存

  • 刷新Magento Open Source缓存后,管理员中不再显示已禁用全页缓存,并且 use_stale_cache 已启用。
  • 刷新缓存时,New Relic部署标记现在可按预期工作。 GitHub-32649

购物车和结账

  • 签出工作流的帐单步骤上的地址搜索弹出窗口不再导致DOM错误。
  • addProductsToCart 现在,突变对多个产品均可正常工作。 以前,此查询返回第一个具有准确小计的产品,但返回其他产品的小计0。
  • 现在可处理由SKU添加的受限产品的权限异常。 购物者现在可以在店面看到相应的消息,并且错误表中的数量字段已禁用。 以前,applicationOpen Source引发如下异常: There has been an error processing your request.
  • 已优化在禁用购物车价格规则后更新受影响报价的SQL查询,以避免锁定整个报价表。
  • 禁用访客结帐后,具有全局帐户共享的购物者不再需要在多站点部署中登录到辅助网站。 现在,当购物者导航到子域时,将加载客户数据。 购物车将不再被要求再次登录,并且会显示之前的购物车内容。
  • 当在多地址结帐中删除单个数量地址项时,结帐工作流中的地址下拉列表值不再更改报价中的其余项。 以前,当在多地址签出过程中从报价中删除某个产品时,所有产品的地址下拉列表值都将更改为默认值。
  • cart 当产品缺货时,查询不再返回空响应。 新 errors 响应中引入了包含错误消息的元素。 以前,当您使用缺货产品运行查询时,应用程序开源会显示 null 下的值 items 部分作为响应。 请参阅 购物车查询.
  • 当访客购物者在将产品添加到购物车后创建帐户,然后再继续结帐时,配送方式现在可按预期使用。 以前,当访客在创建帐户之前将产品添加到购物车时,在结帐期间没有可用的配送方式。 将其他产品添加到购物车后,即可使用配送方式。
  • 现在,购物者可以在购物车中没有选项时为其添加产品。 允许国家/地区 字段已选中。
  • 会话超时后,购物车内容和登录状态现在会按预期重新加载,当时 启用持久性 设置为 . GitHub-35182
  • 现在,当购物者针对具有多个配送地址的订单从配送页面导航到结账工作流中的购物车页面时,可以正确更新迷你购物车小计。 以前,小计是两倍。
  • 在以下情况下,迷你购物车现在会在会话超时后显示之前添加的产品: 启用持久性 已启用。 GitHub-35183
  • 商家现在可以创建贷项通知单,其中 退款(包括 Tax) 设置为–0.01,现在可以将此数量设置为0。 以前,不能在这些条件下创建贷项通知单。

购物车价格规则

  • Parent Only 现在,在购物车规则条件中正确使用了属性范围。

目录

  • 现在,在通过更新产品名称时,产品URL密钥保持不变 PUT /V1/products/ 用于商店视图。 以前,新的URL密钥是根据新的产品名称生成的,并分配给产品,它覆盖了该商店视图中的URL密钥。
  • 将产品从Page Builder产品小组件设置为轮播模式添加到类别时,不再触发页面重新加载。
  • 产品设置为 无法单独显示 不再显示在目录高级搜索结果中。
  • 现在,可在“批量属性更新”页面上正确更新动态包属性。 以前, 动态SKU 属性仍设置为 即使在“批量更新”页面上禁用了这些变量。
  • 现在,可以使用增量索引器而不是完全重新索引来正确应用目录规则。
  • 现在,您可以在多页产品列表的列表视图和网格视图之间成功切换。 以前,当您在切换到网格视图之前导航到多页产品列表视图的最后一页时,应用程序Open Source显示以下错误: Unfortunately there are no products in this category on our website currently.
  • 管理员操作日志报告现在会按预期显示更新的产品ID和更新的状态信息。
  • 现在,触发器将按预期恢复 catalogrule_product_price 表进行完全重新索引。 以前,触发程序会从 catalogrule_product_price 表a catalogrule_rulecatalogrule_product 完全重新索引。
  • 用于将产品分配给类别的类别规则不再随机更改。
  • 具有范围受限访问权限的管理员无法再全局更新类别。 以前,当多个网站使用同一类别但产品不同时,并且权限仅限于一个商店的管理员更改了该类别中的产品时,其他商店的产品选择也会更改。
  • 现在,当使用指定区域设置的非默认货币时,产品详细信息页面会显示正确的价格。 以前,店面上的数字本地化达不到预期。
  • 现在,在尝试检索具有重复记录的产品的层级价格时,API和店面会显示相同的错误消息。 以前, PUT /V1/products/tier-prices 返回不正确的错误消息。
  • 现在,当您尝试添加带有尾随连字符的产品URL密钥时,Magento Open Source会提供验证错误消息。 还提供信息性工具提示文本。
  • ConfigurableWishlistItem.configured_variant 字段已替换 ConfigurableWishlistItem.child_sku 字段。 当客户希望列表包含未配置的可配置产品时,后一个字段触发了内部错误。
  • 现在,在批量属性更新期间只为选定的存储生成URL重写,以更改产品可见性。 以前,批量属性更新会为错误的存储创建URL重写。
  • Synchronize widget products with backend storage 设置已启用,则应用程序开源会将最近查看的产品数据添加到中 catalog_product_frontend_action 数据库表。 在添加记录时,它包括客户或访客ID。 此 recently_viewed_product 如果客户ID和访客ID为空,则响应中的部分现在为空。 因此,当 customer/section/load 在发送Ajax请求后,应用程序开源可以基于客户或访客ID正确筛选最近查看过的产品。 以前,响应包含 catalog_product_frontend_action 数据库表,因为没有检查空的客户或访客ID。
  • 管理员现在可以从“管理员”幻灯片面板中更改购物车中的可配置产品选项。 以前,幻灯片面板无法正常工作。
  • 现在,在保存对子产品的更改时,可配置产品父项的页面缓存会按预期清除。 以前,由于未清除缓存,因此不会在storefront配置产品页面上选择更改。 GitHub-34508
  • 现在,产品列表在Admin中正确呈现。 以前,产品列表不会呈现,并且Magento Open Source会显示此错误: Item (Magento\Catalog\Model\Product\Interceptor) with the same ID "<ID>" already exists. GitHub-33145
  • 现在,在目录价格范围从更改后,产品详细信息页面和多商店部署中的店面搜索中的产品价格是相同的 网站全局. 以前,“目录搜索结果”页显示 全局 价格,产品详细信息页面显示 网站 价格。 GitHub-34074
  • 分层导航现在可以在以下情况下显示具有预期最高价格的产品: 价格导航步骤计算 设置为 手动.
  • 在以下情况下,您现在可以更改类别中显示的每页产品限制 记住类别分页 已启用。 以前,Cookie form_key 和UI form_key 不同,Magento Open Source显示此错误: Invalid Form Key. Please refresh the page.
  • EAV索引器现在以类型处理产品ID int 以防止可能出现的性能问题。
  • 现在,在添加名称中包含“。”的新图像后,可成功生成新的产品缓存 到某个产品,然后保存该产品并清理图像缓存。 GitHub-32699
  • 当您尝试从产品页面创建属性而未填写管理员字段时,Magento Open Source现在会按预期显示错误消息。 GitHub-33099

  • 现在,当主页包含多个目录列表时,所有目录产品列表上的产品评级均正确。 GitHub-33867

可配置的产品

  • 现在,在产品详细信息页面上更改其数量后,Magento Open Source会通过选定的选项显示可配置产品的正确产品价格。 以前,在数量更改后,价格会重置为初始值。
  • products query现在检索可配置产品的价格,这些价格准确地反映了 显示缺货 配置设置。 以前,查询不会返回准确的价格。
  • 可配置选项现在链接到在管理员中创建的可配置产品,使用 POST /V1/configurable-products/configurable1/child.
  • 现在,多选属性可在产品编辑期间正确保存。 以前,在保存产品时,applicationOpen Source保存了非选定属性的默认选项以及选定属性。
  • 在创建全局期间,Magento Open Source现在会按预期显示可配置属性 select 通过修补程序脚本访问属性。 以前,符合条件的全局属性会被隐藏。
  • addConfigurableProductsToCart 突变现在可用于添加具有自定义选项的可配置产品。 以前,applicationOpen Source引发此错误: Magento 2.3.4 graphql Notice: Undefined index: option_value in /var/www/html/mg234/vendor/magento/module-configurable-product-graph-ql/Model/Resolver/ConfigurableCartItemOptions.php on line 62. GitHub-28860

  • 您现在可以对具有可选自定义选项的可配置产品重新排序。 以前,重新排序尝试失败,这意味着显示以下错误: Some of the selected options are not currently available. GitHub-35409

  • addConfigurableProductsToCart 现在,突变对多个产品均可按预期运行。 以前,返回的产品信息不正确,或者返回的错误消息无效。 GitHub-30948

客户

  • 现在,Magento Open Source可根据店面的网站设置正确显示预定义的EAV系统属性。 以前,为一个网站启用并为另一个网站禁用的网站级别客户属性将显示为两个网站均已启用。

可下载

  • 您现在可以从可下载的产品中删除示例链接和文件。 GitHub-31887

电子邮件

  • 系统颁发的电子邮件现在已成功发送给具有“”的收件人。 — ”时,发送电子邮件给团队。
  • 客户现在可以按照正确的时间表收到有关其放弃购物车的电子邮件提醒。 新 TIMESTAMPDIFF(DAY, ,) SQL函数已替换 TO_DAYS() 函数并根据日期和时间计算时间戳中的差异。 以前,不会按计划发送电子邮件提醒,因为不正确地计算购物车放弃的两个日期时间值(任何时区)和服务器时间(UTC)。
  • 当购物者单击后输入无效的电子邮件格式时,Magento Open Source现在在“送货”页面上显示错误消息 下单. 以前,错误消息显示在“付款”页面上。 [GitHub-33590] (https://github.com/magento/magento2/issues/33590

框架

  • bin/magento setup:config:set 命令不再覆盖中设置的缓存ID前缀 app/etc/env.php.
  • bin/magento setup:static-content:deploy -s compact 命令现在会按预期包含子主题中的样式。 以前,主题CSS文件在部署后不在店面上。
  • 已添加新的sniff以检查中是否使用了闭合斜杠 void 元素。
  • 为产品分配新源并更改其数量后,Magento Open Source不再引发SQL错误。 GitHub-35262
  • 属性排序顺序现在按中的指定方式工作。 di.xml 更新后的文件。
  • updateCartCurrency 函数现在设置string而不是cart对象内的对象。 以前,applicationOpen Source没有使用加载报价 getQuote 因为 updateCartCurrency 函数设置一个对象,而不是在cart对象内设置字符串。 GitHub-34199
  • 由于以下原因,单元测试中不再出现弃用通知\DateTimeFormatter::formatObject(). 现在,此方法可按预期处理以下对象的数字值: $format.
  • Magento Open Source不再显示 preg_replace() 管理员错误。 第三个参数($subject)现在属于类型 array|string 而不是 bool.
  • isFreeShipping 方法现在会返回一个整数而不是布尔值。GitHub-35164
  • 为任何类方法创建插件时,Magento Open Source不再引发以下错误 vendor/magento/module-backend/Model/Menu.phpError: Call to undefined method ReflectionUnionType::getName(). GitHub-35292
  • 现在,当您导航到时,Magento Open Source返回404错误,而不是500错误 /checkout/sidebar/updateItemQty/?item_qty=error 在店面。 以前,引发此错误: Warning: A non-numeric value encountered in /vendor/magento/module-checkout/Controller/Sidebar/UpdateItemQty.php on line 69. GitHub-34380
  • Magento Open Source不再触发 trim(): Passing null to parameter #1 ($string) of type string is deprecated 在没有SSL配置的情况下配置AMPQ连接时出错。
  • 已更正 longblog 数据库定义到 long blob. GitHub-35108
  • 包含单引号的挖空文本现在可翻译。 GitHub-34319
  • A TypeErrormagento2/app/code/Magento/Security/Model/AdminSessionsManager.php 已更正 intstring. GitHub-34415
  • .htpasswd 已被添加到中禁止的位置 nginx 配置文件。 GitHub-35150
  • 通过添加缩短了类别产品列表页面的加载时间 Magento_Ui/js/core/app as a depsapp/code/Magento/Ui/view/frontend/requirejs-config.js. GitHub-34847
  • ProductRepository.php:get 现在,方法会返回一次缓存键。 以前,他们被送回两次。 GitHub-34958
  • 向cron作业的异常处理程序中创建的新异常添加了错误消息。 GitHub-34941
  • 的“自述”文件 GraphQl-GroupedProductGraphQl 模块已更新。 GitHub-34951
  • 店面打印订单/发票/贷项通知单页面不再显示默认的Luma徽标,而是已指定在网站上显示的徽标。 GitHub-34942

常规修复

  • 将最大会话大小设置为0 (管理员) 存储 > 设置 > 配置 — 高级)不再注销管理员。 GitHub-35312
  • 现在,当您从管理员添加分配给非默认网站的新客户地址时,会根据客户所分配的网站正确加载客户地址属性配置设置。
  • 通过Page Builder添加捆绑产品时,Magento Open Source不再引发异常。
  • 现在,您可以在iOS设备上创建一个客户帐户,其名字中带有斜撇号(')。 以前,只允许使用直撇号,而使用iOS 11+默认倾斜撇号会导致 Name is not valid! 错误。
  • products 现在,查询会返回准确反映“显示相关产品”配置的产品信息。 此 related_productsupsell_products、和 crosssell_products GraphQL ProductInterface中的字段现在分别根据Show Related Products 、 Show Upsell Products和Show Cross-Sell Products配置解析。
  • 将产品设置为新开始日期 属性现在显示正确的日期,当 将产品设置为新 属性是通过批量产品批量更新设置的。 以前, 将产品设置为新开始日期 显示为 1970年1月1日.
  • 不再自动授予具有受限角色的用户访问新模块的权限。
  • 现在,相关的产品规则条件可按预期用于包含以下内容的产品 multiselect 属性。
  • 商家现在可以添加层价格属性(tier_price)与产品比较之间的关联。 以前,产品比较页面崩溃时, 店面可比较 已启用此属性的设置。 GitHub-35244
  • Magento Open Source现在,当您设置无效的Cookie域(存储 > 配置 > Web > 默认Cookie设置Cookie域)。 以前,网站崩溃。 GitHub-35048
  • 当管理员将作用域限定为单个网站的Magento Open Source使用PageBuilder将产品添加到Content元素时,角色不再引发错误。 以前,applicationOpen Source引发SQL错误。
  • 在编辑和添加地址页面上的街道地址第二行添加了验证。 现在强制实施在秒上指定的最小和最大文本长度。
  • 升级后,在Admin中创建目录规则时,Magento Open Source不再引发以下错误: A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.
  • Magento Open Source后,当您激活 选中此处将RSS源链接到您的愿望清单 复选框 共享愿望清单. GitHub-34998
  • 的标题 显示密码 复选框(“客户登录”、“客户注册”、“客户编辑”(“更改密码”部分)和“客户设置新密码”表单)现在可翻译。 GitHub-34857
  • 更新了中的标签和注释描述 app/code/Magento/NewRelicReporting/etc/adminhtml/system.xml. GitHub-31947
  • 删除了不需要的 csp_whitelist.xml 文件。 GitHub-30607

GraphQL

  • 缺失 price_range 属性已添加到GraphQL BundleItemOption 类型。 GitHub-35010
  • products 当满足以下条件时,查询不再作为聚合返回属性 在搜索结果中使用 分层导航设置已禁用。 GitHub-33318
  • A price_including_tax 字段已添加至 CartItemPrices. GitHub-29057
  • new_from_datanew_to_datefieldsProductInterface 不再被弃用。 GitHub-34783
  • categories 在获取一个类别的列表时,查询不再引发异常,因为其中某个类别包含无法在文件系统上找到的图像。 以前,applicationOpen Source引发此异常: Category image not found. GitHub-34266
  • products 查询现在返回 category_uid 作为预期的聚合。 GitHub-32557
  • updateCartItems 现在,当产品库存达到最大库存量时,突变会按预期删除产品。 GitHub-30220
  • urlResolver 当多个主页具有相同的标识符时,查询现在可以正确解析路径分隔符(/)。 以前,查询不会解析分隔符并返回空值。 GitHub-33615
  • customer 查询现在在查询订单时,会按预期提取捆绑产品多选选项。 GitHub-34717
  • 发出GraphQLMagento Open Source后,请求会话不再结束。 以前, ClearCustomerSessionAfterRequest 插件将购物者注销。 GitHub-34550
  • 中的可配置产品价格范围 products 现在,当满足以下条件时,可以正确计算查询响应: 显示缺货产品 已启用配置设置。 以前,在计算最低和最高价格时会考虑禁用的选项。
  • products 现在,当按位置排序时,查询会返回正确过滤的多个类别。
  • setShippingAddressesOnCart 请求现在可成功验证区域ID。 以前,当您使用区域ID而不是区域代码时,applicationOpen Source会引发错误。
  • products 现在,查询仅返回与请求中传递的存储区关联的类别。
  • categoryList 现在,当在标头中指定存储时,查询会返回反映查询的存储根类别的结果。 以前,即使标头中指定了其他存储,默认根类别中的类别也会包含在结果中。
  • products 当满足以下条件时,查询不再作为聚合返回属性 在搜索结果分层导航中使用 设置已禁用。 GitHub-33318
  • cart query现在只为免费订单返回一种支付方式。 以前,查询响应中会返回所有活动的支付方法。 GitHub-34036
  • products 查询不再返回 price_range 受禁用的变体影响的可配置产品的值。 GitHub-33629
  • 在之前添加了插件 collectQuoteTotals 调用以确保不会多次应用商店积分。
  • generateCustomerTokenAsAdmin 突变现在可按预期检索客户令牌。 以前,不会返回令牌,而是返回此错误: Customer email provided does not exist.
  • GraphQL现在,当自定义 type 产品属性已定义。 以前,架构无效,因为 type 产品类型的属性已由自定义覆盖 type 属性。 GitHub-34929
  • 客户添加或更新了 createCustomercreateCustomerV2updateCustomer,或 updateCustomerV2 现在添加了活跃新闻稿订阅的突变。 以前,即使请求包含正确的输入参数,客户也会取消订阅新闻稿。 GitHub-33599
  • products 现在,查询特定商店视图将只返回多站点部署中特定网站根类别中的类别。 以前,查询返回其他网站的根类别中的类别。 GitHub-34570
  • products 现在,查询仅返回提供的类别ID的子类别。 以前,它会返回所有类别。 GitHub-35220
  • customerOrders 现在,当满足以下条件时,查询会按预期做出响应 gift_message 响应中指定了对象,但礼品消息不存在。 以前,查询返回以下消息: Can't load gift message for order is returned. GitHub-28957
  • 修复了以下错误: catalog_category_product 索引器导致 products 查询以从另一个存储区返回类别。 GitHub-31253
  • generateCustomerToken 突变现在会在 customer_log 在生成客户令牌后按预期执行。 GitHub-33378

Google Analytics

  • Google标签模块已添加到代码库,该代码库支持在2023年7月过渡到Google Analytics4。 您当前可以在Google Universal Analytics资产中使用和收集新数据,但Google Universal将于2023年7月终止生命周期。 GitHub-35204GitHub-35376

图像

  • 产品详细信息页面上的图像不再闪烁,并且图像会按预期保持居中。 以前,在产品详细信息页面完成加载图像后,图像会明显向下移动。

导入/导出

  • 现在,在重新生成CSV文件之前从管理员中删除交叉销售产品后,导出CSV中相关的、追加销售和交叉销售产品位置是正确的。 以前,删除交叉销售产品后不会重新计算交叉销售产品位置,并且产品位置订单不正确。
  • 在导出报表时,Magento Open Source现在会先检查自定义视图,然后再筛选列。 以前,导出的报告不考虑自定义视图,并且导出的列不正确。
  • Magento Open Source现在已成功导入文件名较长的图像。 以前,applicationOpen Source未导入图像并引发此错误: Imported resource (image) could not be downloaded from external resource due to timeout or access permissions in row(s):.
  • 类别ID属性现在在计划的导出过滤器中可用。
  • 捆绑包含问号(?)的产品 由于对中的查询生成器进行了改进,现在可以成功导入选项标题中的 populateExistingOptions 方法。 选项标题也会正确显示。 以前,在初始导入后,连续导入会导致行为损坏和选项数加倍。 购物者也无法将该产品添加到购物车中。
  • 添加了在导入期间验证类别名称的功能。 以前,applicationOpen Source不验证类别名称,这会导致类别名称超过255个字符时出现错误。
  • 中的现有记录 catalog_url_rewrite_product_category 现在,插入新表之前会删除表。 以前,在多商店产品导入期间出现以下错误: SQLSTATE[23000]: Integrity constraint violation. GitHub-34210

基础架构

  • 已弃用的上下文菜单插件已从插件列表中删除。
  • 由于引入,页面生成器模块中与TinyMCE编辑器工具栏相关的逻辑已更新 delayedRender TinyMCE中工具栏的逻辑。
  • 竞争条件不再干扰 contentUpdated 事件侦听器。 GitHub-32068
  • getTypeID 函数现在会返回产品类型ID,而不是产品ID。 GitHub-35458
  • jQuery UI滑块和 SelectMenu 已在中更正映射 vendor/magento/module-theme/view/base/requirejs-config.js.

  • 观察者 sales_order_state_change_before 现在支持从order对象检索数据。 此 sales_order_state_change_before event 参数已更新。 GitHub-26789

  • indexer:reset 已重构为调用 $indexer->invalidate(). GitHub-34988
  • 现在,您可以在中使用冒号符号 htmlClass 属性值,支持使用其他组件,如Tailwind UI。 GitHub-34430

记录

  • 现在,客户、客户地址和订单操作在管理员操作报表中正确记录。 以前,如果 postDispatch 配置设置中未指定处理程序。

MFTF

操作组

在以下测试中,重复性操作已替换为操作组:

AdminConfigurableProductChildrenOutOfStockTest GitHub-32378
AdminCreateStoreViewTest GitHub-34631

新测试

AdminUnlockAdminUserEntityTest GitHub-34836

StorefrontNewsletterSubscriptionWithEnabledNeedToConfirmConfigTest GitHub-33344

重构的测试

AdminCancelTheCreatedOrderWithCashOnDeliveryPaymentMethodTest GitHub-33692

新闻稿

  • 已登录的客户在“管理员”>“ ”中不再标记为来宾 营销 > 新闻稿订阅者.
  • 新闻稿订阅确认电子邮件现在在 如果客户被分配到非默认存储区,并且已从管理员订阅或取消订阅,则为字段。 以前,客户收到一封电子邮件,其中包含默认电子邮件 标题。 GitHub-34963
  • 新闻稿电子邮件模板中的取消订阅URL现在可按预期工作。 GitHub-33310

订购

  • 现在,在编辑订单后,访客客户详细信息保存成功。 以前,某些客户详细信息会丢失,包括 customer_firstnamecustomer_lastname, x_forwarded_for.
  • 在以下情况下,商家无法再创建具有小数总数量的贷项通知单: 十进制数 在产品或全局设置级别上禁用。 以前,商家可以为不适用的小数总数量创建贷项通知单。
  • 当首选项中设置的时区与本地计算机上设置的时区不同时,按日期过滤现在可以正确用于发票、发货、贷项通知单、CMS页面和CMS块网格。 以前,错误地解析日期,过滤的结果包括设置日期范围以外的数据。
  • 当您在“管理员帐户编辑”页面上更改分配给客户的主要电子邮件地址时,Magento Open Source不再更改分配给订单的自定义电子邮件地址。 以前,在编辑客户的主电子邮件地址时,新电子邮件地址会分配给为该客户创建的每个订单。 GitHub-34397
  • 现在,在运行PHP 7.4的部署中,Magento Open Source在贷项通知单网格页上显示所请求存储中的记录。以前,在您创建贷项通知单并尝试查看它之后,applicationOpen Source会引发以下错误: The store that was requested wasn't found. Verify the store and try again.
  • 对于从名称前面带有数字的存储区视图创建的订单,“Magento Open Source”现在在“贷项通知单网格”页上显示贷项通知单。 以前,applicationOpen Source显示以下错误: The store that was requested wasn't found. Verify the store and try again. Exception in /var/www/html/vendor/magento/module-store/Model/StoreRepository.php:75. GitHub-35122
  • Magento Open Source现在在管理员和店面发票页总计上显示免运费(0)。 以前,当订单的发运量为零时,应用产品开放源不会在发票页发运总额中显示发运总额。
  • increment_id 中的列 sales_order 表格已增加。 以前,假定第三方模块 sales_order.increment_id 的长度只有50个字符,仅保存了前32个字符。 increment_id. GitHub-34521

支付方式

  • 管理员现在可以使用PayPal PayflowPro支付方式向管理员下单。 以前,applicationOpen Source显示以下错误: No such entity with cartId = 0.
  • 使用Venmo、PayPal Later或PayPal进行付款时,结账工作流中的“付款复查”页面现在显示正确的付款方式名称。
  • cart 查询不再返回免费订单的所有有效支付方式。 GitHub-34036

Braintree

  • 商家现在可以针对通过Braintree使用Apple Pay支付的订单提交部分退款。 这是Magento Open Source2.4.4中的一个已知问题。

PayPal

  • 现在,Magento Open Source在通过PayPal支付的访客订单中显示正确的客户名称。 以前,客户名称显示为Guest。
  • createPaypalExpressToken突变的解析程序已更新,以正确使用use_paypal_credit输入字段中指定的值。 以前,它尝试使用无效的 paypal_credit 字段。 GitHub-35180

性能

  • 通过为可配置产品的关联产品数据缓存添加TTL(过期日期),改进了Redis缓存管理。 以前,如果将Redis键逐出策略配置为易失性逐出策略,则不会由于缺少TTL值而逐出这些缓存。
  • Grid Filter Condition Type 客户/客户地址属性控制属性过滤器与数据库中的属性值的匹配方式,选项包括 Partial MatchPrefix Match、和 Full Match.
  • 目录搜索全文索引器已重新定位到存储循环之外,这简化了重新索引过程。 GitHub-33984
  • 修复了的问题 array_merge 在循环中。 GitHub-33929

定价

  • 现在,在默认范围中没有值(但在存储视图级别定义)的价格属性可以正确编制索引。 以前,从EAV表中检索价格属性值的SQL表达式不考虑默认范围中未定义该值的情况。
  • 现在,产品详细信息页面上列出的价格与层价格在结账工作流中列出的价格相同,层价格因所选数量而异(例如,某个产品的定价因购买2件产品而非5件产品而有所不同)。 以前,结账价格反映的是最低产品数量的价格。

ReCAPTCHA

  • 提交 在ReCaptcha完全加载之前,“登录”和“创建帐户”页面上的按钮现在处于非活动状态。

角色

  • 存储 > 配置 > 服务 现在,当资源访问设置为时,页面会按预期显示Magento Open SourceWeb API信息 自定义 在“角色资源”选项卡上。 GitHub-35506

Search search-heading

  • 在分层导航中按色板过滤产品会在修复后显示产品的正确图像。
  • 在以下情况下,Elasticsearch查询现在可以按预期工作 int 配置为可搜索的后端 type 属性。 以前,applicationOpen Source会引发 Elasticsearch\Common\Exceptions\BadRequest400Exception 例外。
  • 现在,您可以将搜索同义词与 要匹配的最少搜索词 Elasticsearch参数。 以前,如果在设置中指定此参数并为特定关键字添加了搜索词,则搜索不会返回任何结果。
  • Magento Open Source现在会在部署中的店面显示准确的搜索结果建议计数,其中搜索建议和 显示每个建议的结果计数 设置已启用。 以前,关键字旁边显示的计数为零。
  • 现在,目录页面上按自定义属性排序的产品按预期顺序显示。 以前,产品按属性选项值ID排序,这反映了其添加到属性的顺序。 GitHub-33810
  • 在分层导航中按色板过滤产品现在可显示正确的产品图像。 以前,分层导航 PageCache 键不包含可配置产品的过滤器参数。
  • 修复了上的PHP错误 catalogsearch/advanced/resultcatalogsearch/advanced/index 页数。 以前,当数组在任何高级搜索字符串中传递时,Magento Open Source显示此错误: Warning: trim() expects parameter 1 to be string, array given | magento/module-catalog-search. GitHub-33586

配送

  • 如果未选择允许的配送方式,则Magento Open Source在加载UPS配送费率时不再引发错误。 以前,在这些情况下,当购物者在结帐工作流中输入配送地址时,不会显示其他配送方式,并且Magento Open Source在店面显示错误。 GitHub-34411
  • 计算表费率运费金额中现在不包括虚拟产品价格。 以前,这些产品的运输成本计算不正确。GitHub-35185
  • 现在,对于已应用折扣优惠券的订单,价格为零的表费率发运费率会在结帐工作流的“订单汇总”块中正确显示。 以前,不显示送货方法。

税金

  • 现已为购物车中的产品正确显示固定产品税(FPT)。 以前,如果购物车中的多个产品具有 固定产品税(FPT)将税应用于FPT 后,所有FPT都被分配给购物车中的最后一个产品,并且重置了其他产品。
  • 现在,已正确计算结账工作流中订单摘要部分的固定产品税(FPT)总额。
  • 在简单产品的数量发生更改后,Magento Open Source现在会按预期更新产品页面上简单产品的排除税层价格。
  • 商店配置页面中添加了验证,以验证从下拉列表中选择的国家/地区是否位于欧盟国家/地区列表中。 此 验证增值税号 按钮现在仅对欧盟国家/地区可见。 以前,该按钮对所有国家/地区均可见,包括英国。
  • 现在,在以下情况下可以正确计算层价格: 在目录中显示产品价格 设置为 不含税含和不含税. 以前,产品详细信息页面显示包含税费的层价格,尽管进行了设置。
  • 现在,使用葡萄牙语言环境对店面中任何有效地址的订单正确应用了税。 GitHub-34271
  • cart 返回时查询不再含税 subtotal_with_discount_excluding_tax. GitHub-33905
  • 订单数据的Web API请求(GET /V1/orders/)不再返回行总计的负值。

测试

  • 更正了以下错误: Magento.GraphQl.CatalogGraphQl.ProductSearchTest.testSearchSuggestions 在使用AWSElasticsearch配置运行时。
  • testCreateProductOnStoreLevel 集成测试不再导致数据库上出现嵌套事务。

  • 在PHP 8.1上未设置产品图像时,为Send Friend功能运行WebAPI测试时不再出现以下异常: exception main.ERROR: /var/www/html/lib/internal/Magento/Framework/DataObject.php:131 strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated. GitHub-34864

翻译和区域设置

  • 您现在可以使用翻译内联工具多次编辑同一元素。 以前,只包括使用此工具进行的第一次更改。
  • 编辑管理员文本或标签时,商店视图选择器不再阻止翻译窗格。 您现在可以从翻译窗格中编辑这些功能,单击时界面会显示这些更改 提交.
  • 巴西葡萄牙语和法语语言环境的管理日期时间格式现在有效。
  • 添加了抑音符 [`] 名称验证器的字符,以便为包含此重音符号的名字或姓创建客户帐户。
  • 此文本位于 添加到购物车 “产品详细信息”页面上的按钮现在仍保持为相关区域设置中指定的语言。 在以下情况下,翻译文件现在会根据区域、主题和区域设置转换为相应的JavaScript文件 translate_strategy=embedded. 以前,将产品添加到购物车后文本会还原为英语。
  • 搜索同义词现在遵循其分配的存储范围。 以前,分配给特定存储的同义词可在任何其他存储上搜索。
  • 菲律宾(菲律宾)区域设置问题已得到解决。 GitHub-33996

UI

  • 中冗长的产品名称 目录 > 产品 网格现在使用字形括起来,而不是以单行显示。
  • 最小和最大出生日期范围现在保存为正确的时间戳,然后从有效的时间戳转换为有效的日期格式。
  • 不可用性 magento.com 在管理员登录期间不再导致性能问题。 添加了对获取版本通知的请求超时。
  • 现在,当在Chrome浏览器中显示时,管理员订单、客户和产品网格过滤器的结果会按预期保留。
  • 现在,您可以在以下情况下从管理员创建客户 Magento_LoginAsCustomerAdminUi 已启用,并且 要登录到的商店视图 设置为手动选择。 以前,applicationOpen Source引发此错误: (Magento\Framework\Exception\LocalizedException): Unable to get Customer ID. GitHub-33096
  • 现在,当购物者到达产品图像库中的最后一个缩略图图像时,“下一步”箭头会按预期禁用。
  • 按关键词搜索 输入字段现在具有 aria-label 元素而不是上的占位符 目录 > 产品 页面。
  • 管理员页脚中的“隐私政策”链接现在链接到新的Adobe隐私政策。
  • 当在生产模式下启用JavaScript捆绑时,管理员现在可以访问管理员菜单选项。 GitHub-35325
  • 管理员现在可以将当前用户的过期日期设置为大于2038并成功保存用户。 以前,过期日期已更改的用户在注销后无法重新登录。
  • 当管理员尝试在管理员中保存街道行过多的地址时,Magento Open Source现在显示信息性错误消息 存储 > 属性 > 客户地址. 管理员现在可以删除额外的地址信息并成功保存该地址。 以前,applicationOpen Source会提交额外的行,但不会保存数据。
  • 数据库和本地存储中的产品列表视图配置已更新。 现在,在页面重新加载和视图更改期间,将保存自定义网格视图。
  • 启用网站限制后,您现在可以在商店视图之间切换。 以前,存储视图切换器的问题会阻止切换存储视图。
  • 收藏夹图标上传表单现在支持 .ico 文件类型。 以前,当您尝试在管理员中上载具有此扩展类型的favicon文件时,应用程序开源会显示以下错误: Warning: imagecreatefromstring(): one parameter to a memory allocation multiplication is negative or zero, failing operation gracefully in /var/www/html/vendor/magento/module-media-storage/Model/File/Validator/Image.php on line 64. GitHub-34858
  • 更正了管理网格中下拉选择菜单的显示问题。 GitHub-35386

URL重写

  • 现在,仅特定商店视图中产品的URL会从 url_rewrite 表和管理员,此时特定商店视图的属性代码可见性状态将更改为 无法单独显示. 以前,在中移除产品的所有URL。 url_rewrite 表格。 GitHub-34937

视频

  • 您现在可以使用页面生成器使用YouTube URL参数来添加新视频。 以前,这些参数会自动从URL中删除。
  • 现在,您可以将Vimeo视频设置为在 banner CSP设置为时的元素 restrict mode. 以前,applicationOpen Source会引发JavaScript错误。

Web API框架

  • 已对订单实施互斥,以防止在并发请求更新期间出现争用情况。 以前,在并发REST API调用期间出现的争用情况会导致“已订购的管理项目”表中的发运状态信息发生覆盖。
  • 现在,除非通过REST API更新特定商店视图中的产品时在有效负荷中明确定义,否则将保留产品图像角色继承。
  • Swagger架构(/rest/schema)现在使用唯一的操作ID。
  • 通过创建的购物车价格规则 POST /V1/salesRules/ 在将状态从disabled更改为enabled后,端点现在会保留现有优惠券代码值。 GitHub-35298
  • 通过创建的购物车价格规则 POST /V1/salesRules/ 终结点现在包含有效的 from_dateto_date 值。 GitHub-35265
  • CartItemInterface 现在包含 customizable_options. GitHub-31180
  • 现在,REST API批量PUT和DELETE请求可按预期工作, Magento_ReCaptchaWebapiRest 模块已启用。 GitHub-35348
  • Bulk Rest API现在可与配合使用 bySku 可配置产品的选项。 以前,它返回500错误。
  • 使用创建新的特殊价格分摊计划 POST /V1/products/special-price 端点现在可按预期工作。 以前,端点返回此错误: Future Update already exists in this time range. Set a different range and try again.
  • /V1/products/base-prices 现在,端点可按预期方式与配合使用 目录价格模式 — 网站. GitHub-30132

愿望清单

  • 现在,从愿望清单页面更新项目数量会按预期更新产品详细信息页面上的数量。 应用程序开源现在从产品URL中提取更新的值并填充 qty 愿望清单本身的产品详细信息页面字段。

已知问题

问题:启用Braintree后,管理员用户无法从管理员中为客户创建订单或重新订单。 当管理员用户单击任一项时 订购重新排序,Adobe Commerce不提交订单,并且 system.log 显示此错误: report.CRITICAL: Error: Call to a member function getMethodInstance() on null in /app/vendor/paypal/module-braintree-core/Block/Form.php:174. 解决方法BUNDLE-3137-composer.patch 现已推出。 请参阅 启用Braintree付款后,管理员无法创建订单/重新订单 知识库文章,用于讨论此问题和访问修补程序。 Adobe Commerce 2.4.5-p1中也包含修复。

社区贡献

我们感谢更广泛的Magento Open Source界,并感谢他们为这一版本做出的贡献。

社区工程团队 Magento参与者 按月、季度和年维护最佳贡献个人和合作伙伴的列表。 从该参与者页面,您可以单击链接以转到GitHub上其合并的PR。

合作伙伴投稿

下表列出了合作伙伴所做的贡献。 此表列出了提出拉取请求的合作伙伴、外部拉取请求编号以及与其关联的GitHub问题编号(如果可用)。

个人贡献者

下表列出了来自社区成员的贡献。 此表列出了参与提取请求的社区成员、外部提取请求编号以及与其关联的GitHub问题编号(如果可用)。

系统要求

我们的技术栈栈是基于PHP和MySQL构建的。 有关更多信息,请参阅 系统要求.

安装和升级说明

您可以使用安装Magento Open Source2.4.5 Composer.

recommendation-more-help
1d4eef6c-fef1-4e61-85eb-b58d7b9ac29f