Adobe Commerce 2.4.7发行说明

Adobe Commerce 2.4.7引入了对PHP 8.3的支持。它引入了数百种质量修复和增强功能。 核心编辑器依赖项和第三方库已升级到最新可用版本。 此版本包括显着的性能改进,包括更快地加载具有许多选项的复杂产品的产品列表页面,以及增强索引器管理。 此版本增加了GraphQL对自定义属性和GraphQL解析器缓存的覆盖范围。 它还引入了对最近更新的FedEx和UPS服务的支持。

NOTE
Adobe Commerce版本可能包含向后不兼容的更改(BIC)。 要查看与向后不兼容的更改,请参阅BIC参考。 在BIC亮点中描述了严重的向后不兼容问题。 并非所有发行版本都引进了主要BIC。

其他发行信息

虽然这些功能的代码与Adobe Commerce核心代码的发行版本捆绑在一起,但其中几个项目(例如B2B和Progressive Web Application(PWA) Studio)也单独发行。 每个项目的文档中都提供了特定于项目的单独发行信息,其中记录了这些项目的错误修复。

Adobe Commerce 2.4.7亮点

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

安全性增强

此版本包含与Adobe Commerce 2.4.6-p5、2.4.5-p7和2.4.4-p8中包含的相同的安全修复和平台安全改进。 有关这些已修复问题的最新讨论,请参阅Adobe安全公告

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

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

其他安全增强功能

此版本的安全性改进改进了与最新安全最佳实践的兼容性。

  • 更改未生成的缓存键的行为

    • 块的非生成缓存键现在包含与自动生成的键的前缀不同的前缀。 (未生成的缓存键是通过template指令语法或setCacheKeysetData方法设置的键。)
    • 块的非生成缓存键现在只能包含字母、数字、连字符(-)和下划线字符(_)。
  • 自动生成的优惠券代码数量的限制。 Commerce现在限制自动生成的优惠券代码数量。 默认最大值为250,000。 商家可以使用新的​ Code Quantity Limit ​配置选项(Stores > Settings:Configuration > Customers > Promotions),以防止使用许多优惠券使系统不堪重负。

  • 优化默认管理员URL生成进程。 默认管理员URL的生成已针对增加的随机性进行了优化,这会降低生成的URL的可预测性。

  • 添加了Subresource Integrity (SRI)支持 ​以符合PCI 4.0要求验证支付页面上的脚本完整性。 子资源完整性(SRI)支持为驻留在本地文件系统中的所有JavaScript资源提供完整性哈希。 默认SRI功能仅在管理员和店面区域的支付页面上实施。 但是,商家可以将默认配置扩展到其他页面。 请参阅​ Commerce PHP开发人员指南.中的子资源完整性

  • 对内容安全策略(CSP)的更改 — 对Adobe Commerce内容安全策略(CSP)的配置更新和增强以符合PCI 4.0要求。 有关详细信息,请参阅​ Commerce PHP Developer Guide ​中的内容安全策略

    • Commerce管理员和店面区域的付款页面的默认CSP配置现在为restrict模式。 对于所有其他页面,默认配置为report-only模式。 在低于2.4.7的版本中,CSP在所有页面中均配置为report-only模式。

    • 添加了一个nonce提供程序,以允许在CSP中执行内联脚本。 nonce提供程序有助于为每个请求生成唯一的nonce字符串。 随后,这些字符串将附加到CSP标头。

    • 添加了用于配置自定义URI以报告“管理员”中“创建订单”页面和“店面”中“结帐”页面的CSP违规的选项。 您可以从管理员添加配置,或通过将URI添加到config.xml文件来添加。

      note note
      NOTE
      将CSP配置更新为restrict模式可能会阻止管理员和店面中付款页面上现有的内联脚本,这会导致页面加载时出现以下浏览器错误: Refused to execute inline script because it violates the following Content Security Policy directive: "script-src。 通过更新白名单配置以允许所需的脚本修复这些错误。 请参阅​_Commerce PHP开发人员指南_​中的疑难解答
  • 新的全页缓存配置设置可以帮助减轻与HTTP {BASE-URL}/page_cache/block/esi端点相关的风险。 此端点支持来自Commerce布局句柄和块结构的无限制、动态加载的内容片段。 新的​ Handles params size ​配置设置设置此端点的handles参数的值,该值确定每个API允许的最大句柄数。 此属性的默认值为100。 商家可以从管理员(Stores > Settings:Configuration > System > Full Page Cache > Handles params size)更改此值。 请参阅将Commerce应用程序配置为使用Varnish

  • 通过REST和GraphQL API传输的付款信息的本机费率限制。 商家现在可以为使用REST和GraphQL传输的付款信息配置费率限制。 此新增的保护层支持对分拣攻击的防范,并可能会减少一次测试多个信用卡号码的分拣攻击的数量。 这是现有REST端点的默认行为的更改。 请参阅速率限制

  • isEmailAvailable GraphQL查询和(V1/customers/isEmailAvailable) REST端点的默认行为已更改。 默认情况下,API现在始终返回true。 商家可以通过将Admin中的​ 启用来宾签出登录 ​选项设置为yes来启用原始行为,但这样做可能会向未经身份验证的用户公开客户信息。

平台增强功能

此版本的平台升级可改善对最新安全最佳实践的合规性。

Adobe Commerce 2.4.7包含以下平台升级:

  • PHP 8.3兼容性。 此发行版本引入了对PHP 8.3的支持。Commerce现在同时支持PHP 8.3和8.2。PHP 8.2将支持到其2025年12月服务终止(EOS)日期。 2025年12月之后,所有运行2.4.7部署的商家都应迁移到PHP 8.3。

Adobe Commerce 2.4.7仍与PHP 8.1兼容,仅用于升级目的。 不支持PHP 8.1,因此不建议使用。 Adobe Commerce 2.4.7核心代码、所有捆绑的扩展以及所有Adobe拥有的扩展和SaaS服务都与PHP 8.3兼容。

  • RabbitMQ 3.13支持。 此版本与最新版本的RabbitMQ 3.13兼容。兼容性仍与RabbitMQ 3.11和3.12兼容,这两个版本分别支持到2024年8月和2024年12月,但Adobe建议仅将Adobe Commerce 2.4.7与RabbitMQ 3.13结合使用。

  • 编辑器2.7.x。 与Composer 2.2.x的兼容性得以保留。

  • 清漆缓存7.4支持。 此版本与最新版本的Varnish Cache 7.4兼容。与6.0.x和7.2.x版本的兼容性保持不变,但我们建议仅将Adobe Commerce 2.4.7与Varnish Cache版本7.4或版本6.0 LTS一起使用。

  • Elasticsearch8.11 ​兼容性

  • Opensearch 2.12和OpenSearch 1.3支持

  • Redis 7.2

  • extjs库已替换为最新版本的jsTree

  • 已删除jquery/fileUpload库。

Adobe Commerce核心代码中的所有JavaScript Libraries和NPM依赖项均已更新至最新可用版本。 所有Laminas库依赖项都已更新到与PHP 8.3兼容的最新版本。

其他升级

  • 每个订单支持多张优惠券。 商家现在可以使用新的​ Maximum number of coupons per order ​配置选项配置每个订单可以应用的最大优惠券数量。 默认情况下,此值设置为1。 您现在可以使用RESTGraphQL将多个优惠券应用到购物车。

  • Commerce UPS XML API网关已迁移到新的Commerce UPS REST API,以支持UPS对其API安全模型进行的更新。 (UPS正在为所有API实施OAuth 2.0安全模型(持有者令牌)。) 所有以前的Commerce UPS XML API已从Adobe Commerce 2.4.7代码库中移除。

  • Adobe Commerce 集成与FedEx已从旧版FedEx WSDL Web服务迁移到最新的FedEx RESTful API。 FedEx Web服务跟踪、地址验证和验证邮政编码WSDLS将于2024年5月停用。

  • 增加了对新的USPS Ground Advantage配送方法的支持。 这是与USPS的新配送方法USPS Ground Advantage(2023年7月发布)的开箱即用集成。 此新集成可用于通过USPS配送服务检索配送费率并安排配送和退货。 USPS Ground Advantage发运方法取代了这些发运方法,在USPS Ground Advantage发运方法发布时,这些发运方法已停用:

    • USPS零售场
    • 一流包服务
    • 包裹选择接地
  • Temando配送模块已从核心Commerce代码库中移除。 Adobe Commerce 2.4.4已弃用此功能。

性能和可扩展性增强

Commerce 2.4.7包括以下对Commerce性能和可扩展性的增强:

  • 企业商家现在可以在Adobe Commerce中配置最多​ 1百万个基于优惠券的活动购物车价格规则,购物车和结账操作的性能不会发生显着下降。

  • 增强的索引器管理。 新indexer:set-status命令支持索引器状态的动态管理。 管理员用户可以使用此命令将索引器状态更改为suspendedinvalidvalid。 此功能对于在大量批量操作(如产品导入或更新)期间管理系统性能特别有用,因为它允许控制索引器何时由系统的cron作业自动触发。 请参阅管理索引器

  • 具有许多选项的复杂产品的产品列表页面。 对于包含具有超过100个选项的复杂产品的产品列表页面,加载时间已缩短。 GraphQL按类别列出产品的请求性能也得到了改进。

  • REST 导入API现在支持 JSON格式。 商家现在可以每分钟将100,000条记录以JSON格式导入Adobe Commerce。

  • 销售规则性能改进。 通过许多(大约100,000个)有效的销售规则提高了企业部署的性能。 大量实施促销的企业部署通常会部署许多活动的购物车规则。 在结账操作期间,这些类型的运行Commerce 2.4.7的企业部署将不会看到与配置的购物车价格规则数量有关的性能下降。

  • 对于具有许多存储区的部署,存储级配置的保存操作速度更快。 在具有500个以上存储的部署中保存配置设置可能非常耗时。 新的异步配置模块通过运行使用使用者处理消息队列中的保存操作的cron作业来启用异步配置保存操作。 默认情况下,AsyncConfig处于禁用状态。

  • 加快生成大型配置的配置缓存。 启用配置缓存后,bin/magento cache:clean config命令现在会预预热配置缓存。 这减少了为大型配置生成配置缓存所需的停机时间。 在将数据写入缓存之前,配置保存操作不再清理config_scopes缓存,这还可以减少写入配置数据时锁定其他请求的时间。

GraphQL应用程序服务器

GraphQL Application Server使Adobe Commerce能够在Commerce GraphQL API请求之间保持状态,并且无需引导,从而增加所有GraphQL API的吞吐量、降低延迟并高效使用资源。 通过在进程之间共享应用程序状态,GraphQL API请求变得明显更高效,GraphQL API响应速度平均提高30%。

GraphQL Application Server仅适用于Adobe Commerce。 它不适用于Magento Open Source。 您必须提交Adobe Commerce支持票证,才能在Pro项目中启用GraphQL应用程序服务器。

NOTE
GraphQL Application Server当前与Amazon Simple Storage Service (AWS S3)不兼容。 在Adobe于2024年晚些时候发布修补程序之前,当前在远程存储上使用AWS S3的Adobe Commerce基础架构客户无法使用GraphQL Application Server。

Adobe Commerce扩展中继包

此版本引入了Adobe Commerce扩展metapackage v2.0.0,它自动将所选Adobe Commerce扩展与此核心版本捆绑在一起。 运行composer update时将安装此中继包中包含的这些扩展版本,从而简化升级到最新核心版本时升级这些扩展的过程。 这些扩展维护独立的发放计划。

适用于Adobe Commerce 2.4.7的Adobe Commerce扩展元包包含以下扩展:

此扩展metapackage的未来版本可能包含其他扩展。

Adobe Commerce webhook

Commerce webhook (v1.2.0)允许开发人员配置同步逻辑,以在Adobe Commerce事件触发时执行对外部系统的调用。 当Commerce必须立即使用第三方端点计算或验证订单总计、税额或付款等值,并将结果写回Adobe Commerce时,需要同步调用。

Commerce webhook现在默认安装。 查看Adobe Commerce Webhook概述

Adobe Stock

Adobe Stock包(adobe-stock-integration)现已打包到Commerce扩展元包(extensions-metapackage)中,以支持更频繁的更新。

B2B

NOTE
2.4.7版本与B2B 1.4.2兼容。但是,Adobe建议客户在升级之前等待即将发布的B2B 1.5.0 GA版本,该版本包含对PHP 8.3的支持。请参阅B2B发行说明

Braintree

  • Vaulted PayPal和Pay Later更改 — 以前保存/存储其PayPal帐户的登录客户可以选择按以下方式付款:

    • Pay Now (无需登录到其PayPal帐户,用户可以使用默认卡支付)
    • 使用其他融资来源付款
    • 使用其他帐户付款
    • PayPal Pay Later或PayPal Credit按钮
  • 对​Google Pay​ 3DS支持 — 包括对Google Pay非令牌化卡的3DS验证支持。 有关详细信息,请参阅Braintree文档

  • Vault Apple Pay Payments — 允许已登录的客户将其Apple Pay付款保存到Commerce商店帐户以用于未来的交易。 这减少了结账的步骤数,并为回头的客户创造了更快的结账体验。

  • Vault Google Pay Payments — 允许已登录的客户将其Google Pay付款保存到Commerce商店帐户以用于未来的交易。 这减少了结账的步骤数,并为回头的客户创造了更快的结账体验。

  • Vault Venmo Payments — 允许已登录的客户将其Venmo帐户保险库/存储到其Commerce存储帐户,以便用于未来的交易。 这减少了结账的步骤数,并为回头的客户创造了更快的结账体验。

  • Vault ACH Payments — 允许登录的客户将其ACH付款保存到Commerce商店帐户,以便用于未来的交易。 这减少了结账的步骤数,并为回头的客户创造了更快的结账体验。

  • 签出顶部的​ Express Payment按钮 — 为鼓励更快的签出体验,我们在签出开始时引入了Express Payment选项。 客户现在可以通过PayPal、PayPal Pay Later、Apple Pay和Google Pay Express付款进行付款。

  • 管理配置​ 中的 ​Braintree​发行说明和支持链接 — 商家现在可以直接从Commerce管理链接到在线Braintree支持和发行说明。

  • GraphQL支持除Venmo ​之外的所有Braintree付款方法 — GraphQL API中公开了更多配置。 这对于Headless应用程序特别有用。

  • 帐户区域​ 中的 ​Vaulting​付款 — 已登录的客户现在可以在客户帐户区域保管库/商店新信用卡/借记卡和PayPal帐户。 以前,客户在结账时保存他们的付款以供以后使用时只能进行保险库/存储,现在他们可以在无需创建新交易的情况下保险库新的信用卡/借记卡和PayPal帐户。

  • 无摩擦交易 — 无摩擦交易通过减少完成在线信用/借记卡交易的客户点击/步骤数来加快付款流程。 以前(启用3DS时),每个客户都会受到3DS的挑战。 有了新的无摩擦交易功能,客户只有在银行要求时才能获得3DS。 这会减少购物车放弃率,提高转化率,并带来更多销售。

  • 争议Webhook — 当客户对Braintree中的事务提出争议时,争议状态现在将传递到Commerce。 它可以在​ Sales > Order ​网格中搜索并附加到每个订单。

Commerce与Adobe IMS集成

Adobe IMS集成包(adobe-commerce/adobe-ims-metapackage)现已打包到Commerce扩展元包(extensions-metapackage)中,以支持更频繁的更新。

GraphQL

Commerce 2.4.7包括增强的GraphQL缓存功能、对GraphQL架构的自定义属性支持、对Headless订单取消的支持,以及改进的解析器缓存。

  • 更灵活的购物车管理。 现在,clearCart突变可在单次操作中清除指定购物车的内容。 它替换了已弃用的clearCustomerCart突变。

  • 创建购物车突变方面的改进。 已添加createGuestCart突变以替换已弃用的createEmptyCart突变。 以前,如果您使用createEmptyCart,则无法确定购物车是用于来宾还是已登录的客户。

  • 订单项现在包含产品图像OrderItemInterface公开产品图像,这允许将图像与订购的产品关联并更有效地加载。 GitHub-32369

  • 对解析程序缓存的扩展支持。 以下GraphQL查询解析器现在可以在GraphQL解析器结果缓存中缓存,这提高了使用POST请求提交查询时的性能:

    • Magento\CustomerGraphQl\Model\Resolver\Customer::resolve
    • Magento\CustomerGraphQl\Model\Resolver\CustomerAddress::resolve
    • Magento\CustomerGraphQl\Model\Resolver\IsSubscribed::resolve
    • Magento\CatalogGraphQl\Model\Resolver\Product\MediaGallery::resolve
  • 支持订单取消cancelOrder突变允许客户取消订单,传递其标识符和取消原因。

    • storeConfig中的新order_cancellation_enabledorder_cancellation_reasons.description响应字段
      查询支持用户发起的订单取消请求。 查看查询商店的订单取消配置
  • 对自定义属性的增强支持。 通过丰富API数据以支持所有属性类型,增强了GraphQL自定义属性支持。 GraphQL EAV属性架构现在支持在管理员中扩展客户属性和客户地址对象,以及使用GraphQL检索它们。 特定的增强功能包括:

    • 扩展/添加了针对特定领域(如客户和客户地址)的自定义属性支持
    • 添加了自定义属性的缓存
    • 增强了对产品的现有自定义属性支持
  • 增强的GraphQL缓存功能提高了页面加载速度。 已为这些查询添加了缓存功能,提高了大多数PWA页面的页面加载时间速度:

  • 已改进GraphQL分析器性能。 通过减少每个请求调用解析方法的次数,GraphQL解析器的性能已得到改进。 现在只调用一次。 以前,解析器至少被调用三次。

针对现有突变的新字段

  • 已将quickorder_active字段添加到storeConfigavailableStores查询。 此字段指示是否启用快速订购功能。

  • 已将以下字段添加到setBillingAddressOnCartsetShippingAddressesOnCart变动:

    • fax
    • middlename
    • prefix
    • suffix

新的查询和变动

已弃用的查询和变动

Inventory management

Inventory management (v1.2.7)提供了用于管理产品库存的工具。 此社区开发的功能与Adobe Commerce和Magento Open Source核心代码捆绑在一起。

支付

  • 为除Venmo外的所有支付方法的核心操作添加了GraphQL支持。 结帐中介绍了付款服务的新GraphQL端点。

  • 除Venmo之外,已改进所有支付方法的信用卡保险存储。 购物者现在可以保存或保存其ACH支付,并从其帐户页面查看或删除它们。 商家可以从管理员启用和禁用ACH保险存储付款。

  • 结账工作流现在包含快速付款部分,其中提供PayPal、Google Pay和Apple Pay Express ​按钮。

付款选项引入了支持的付款方法。

PWA Studio

PWA Studiov14.0与Adobe Commerce 2.4.7兼容。它包括多项增强功能,可改善辅助功能。 有关错误修复的信息,请参阅PWA Studio版本。 有关PWA Studio版本及其兼容的Adobe Commerce核心版本的列表,请参阅版本兼容性

Web API框架

每个购物车使用多个优惠券

新的REST端点支持查看、添加和删除与购物车关联的多个优惠券。

NOTE
几个REST终结点路由首次包含字符串V2而不是V1。 例如,GET /rest/default/V2/carts/{cartId}/coupons。 对于Commerce商家,这些端点旨在替换端点的V1版本。 这些端点仅在Adobe Commerce中可用。

返回与购物车关联的所有优惠券代码:

GET /rest/{store_code}/V2/carts/{cartId}/coupons
GET /rest/{store_code}/V2/carts/mine/coupons

将优惠券代码附加到购物车:

POST /rest/{store_code}/V2/carts/{cartId}/coupons/{couponCode}
POST /rest/{store_code}/V2/carts/mine/coupons/{couponCode}

替换购物车中的优惠券代码:

PUT /rest/{store_code}/V2/carts/{cartId}/coupons
PUT /rest/{store_code}/V2/carts/mine/coupons

从购物车中删除优惠券代码:

POST /rest/{store_code}/V2/carts/{cartId}/coupons/deleteByCodes
POST /rest/{store_code}/V2/carts/mine/coupons/deleteByCodes

其他端点
此版本引入了两个新的REST端点,它们为REST API GETPOST V1/products/attributes端点的限制提供了解决方法。 这些端点为​ Use in Layered Navigation ​选项的Filterable(with results)Filterable(no results)选项的is_filterable属性返回相同的值。 (is_filterable属性是Boolean类型,不允许将此属性设置为Filterable(no results)。)

两个新的REST端点已实施作为解决方法:

  • PUT /V1/products/attributes/{attributeCode}/is-filterable/{isFilterable}。 路径参数: attributeCode (String)和isFilterableint值为: 0表示否; 1表示否;Filterable (with results); 2表示否Filterable (no results))。
  • GET /V1/products/attributes/{attributeCode}/is-filterable。 路径参数: attributeCode (String)。

修复的问题

我们已在Adobe Commerce 2.4.7核心代码中修复了数百个问题。 此版本中包含的已修复问题的子集如下所述。 另外还介绍了早期Commerce 2.4.7 Beta版本中包含的修复。

安装、升级、部署

  • 从设置过程中删除了不必要的缓存操作。 以前,Commerce在运行bin/magento setup:db-data:upgradebin/magento setup:upgrade时将其配置写入磁盘是不必要的,这会导致某些模块在安装期间出现问题。 GitHub-38124
  • 内存不足和大型表格导致的部署问题已得到解决。 由于与大型MySQL表相关的内存超出错误,bin/magento setup:upgrade命令不再失败。
  • 删除app/etc/config.php后,bin/magento setup:install现在成功完成。 以前,在安装期间不会重新生成缺少的文件,Commerce会引发错误。 GitHub-37805
  • 在安装同时安装表和相关mview索引器的新模块时,bin/magento setup:upgrade已重构为成功运行。 GitHub-37304
  • 由于分隔符错误,数据库还原不再失败。 以前,Commerce在执行bin/magento setup:rollback --db时引发此错误: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'delimiter' at line 1, query was: delimiter ;;
  • bin/magento setup:upgrade命令不再失败,因为出现此类型的MySQL内存限制相关错误: PHP Fatal error: Allowed memory size of 4294967296 bytes exhausted (tried to allocate 20480 bytes)。 多选属性迁移已优化为在setup:upgrade期间减少内存消耗。
  • 现在,从管理员和命令行均可按预期生成数据库备份。 以前,Adobe Commerce引发此错误: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'delimiter' at line 1, query was: delimiter ;;
  • 在不指定--lock-db-prefix参数的情况下运行setup:config:set不再从env.php文件中清除当前值。
  • 清漆配置已更新,以防止来宾用户访问与其他客户组相关的缓存内容。
  • 启用​ Checkout Async ​后,购物者现在可以在实施拆分数据库的部署中下订单。 以前,Adobe Commerce引发此错误: An error occurred on the server. Please try to place the order again
  • 现在,在安装同时安装表和相关mview索引器的新模块时,bin/magento setup:upgrade成功完成。
  • 当消息队列主题不包含主题名称时,bin/magento setup:upgrade现在显示信息更丰富的错误消息。 GitHub-34246
  • 当合并的XML文件无效时,bin/magento setup:upgrade现在显示信息更丰富的错误消息。 错误消息现在包含文件名。

管理员UI

  • 默认情况下,仪表板上的图表现在已成功禁用。 GitHub-38430
  • 现在,管理员销售菜单可正确显示子菜单。 以前,分列符无法正常工作,并且某些子菜单未显示。 GitHub-37812
  • 在网格中选择多个页面时,Select ​下拉菜单选项现在显示在管理员​ Content > Pages ​中。 GitHub-35386
  • 更正了配置设置中默认值system/dashboard/enable_charts的路径。 现在,图表按预期显示在管理员中。 GitHub-37668
  • 更正了管理员客户网格的显示问题。 以前,网格列未完全包含在显示的页面中。
  • 现在,悬停颜色可按预期应用于管理员静态网格的行。 GitHub-35358
  • 当购物者输入不含空格的希腊邮政编码时,结账工作流不再显示警告。 GitHub-36676
  • 管理员It's time to change your password链接现在会按预期重定向到“更改管理员密码”页面。 GitHub-37902
  • 现在,无论分配给用户的访问级别如何,子菜单标题都会指示任何同级。 以前,即使子菜单存在多个同级组,这些信息也会对具有有限访问权限的管理员用户隐藏。
  • 现在,产品页面的title标记和meta title标记中均包含页面标题后缀。 GitHub-37680
  • 产品库存状态条件现在正确应用于相关产品规则。
  • Login as Customer ​按钮现在在移动设备上正确显示。
  • 如果登录的管理员用户缺少添加新客户组的权限,Adobe Commerce将不再显示“管理员​ Add new customer group”按钮。
  • 具有受限权限的管理员用户现在可以保存其父产品已分配给其他范围的子产品。 以前,对于未分配到子产品更改范围的父产品,Commerce会使其缓存失效。
  • 管理员用户现在可以成功地在管理员过滤器视图之间切换,而不会损坏或丢失视图数据。 GitHub-37529
  • 存档的订单网格现在会按预期以新订单状态异步更新。 在存档网格中更新订单状态的基于事件的方法可生成准确的订单状态,包括贷项通知单后退款。
  • “管理网格操作”下拉菜单现在可以按预期悬停在​ Content > Pages(以及B2B模块中的共享目录)的选定链接上。 以前,此菜单大部分是隐藏的,管理员用户必须滚动才能查看选项。 GitHub-36710

分析

  • 产品详细信息页面meta itemprop="image"meta itemprop="description"属性现在可用于主产品映像。 GitHub-37497
  • 当​ Catalog Price Scope ​设置为​ Website ​时,购物车网格中产品的“报表”部分现在显示正确的产品价格。 以前,将产品分配给默认网站以外的网站时,产品价格显示为零。
  • 收入报表现在按预期显示在Google Analytics(GA4)门户中。 GitHub-37605
  • Google Tag Manager数据层中的pricequantity值现在按预期发送给Google Analytics。 以前,这些值以字符串形式发送。
  • 解决了在将部署数据发送到New Relic模块时处理标头数据时的错误。
  • 现在,在禁用Google Analytics4标记时,会按预期触发Google Analytics4标记。

横幅

  • 重构了加载横幅内容的方式,以删除过多的数据库查询,从而缩短了购物车加载时间。

捆绑产品

  • 启用​ Display Out Of Stock*​后,类别产品计数现在可以正确计入捆绑产品。
  • customerCart查询现在按预期返回捆绑产品的所有应用折扣。 以前,应用于捆绑产品的总折扣返回为零。
  • 产品详细信息页面现在显示已应用100%折扣的捆绑产品的正确价格。 以前,Commerce对捆绑产品的价格不应用100%折扣。
  • 购物车价格规则现在应用于产品捆绑包,而不是应用于动态定价捆绑产品的每个子产品。
  • 更正了使用POST V1/shipment端点创建包含捆绑产品的装运时发生的错误。 终结点现在按预期添加项目,且不再返回此错误: The shipment couldn't be saved
  • 现在,您可以保存捆绑产品的计划更新,该捆绑产品包含一个具有无限计划更新的简单产品。 现在,创建捆绑产品快照时,所链接的产品将被ID、实体ID以及SKU占用。 以前,当保存捆绑产品上的计划更新时,会检查简单产品的原始版本,而不是简单产品的当前版本。
  • 当产品设置了​ together ​装运类型时,您现在可以使用GET V1/shipment/ API路由创建具有捆绑产品的装运。 捆绑产品现在还可根据其装运类型属性进行验证。
  • 购物者现在可以编辑店面购物车中捆绑产品的数量。 以前,在店面购物车中编辑产品并显示错误时,Adobe Commerce不会处理ItemId的null值。 GitHub-37696
  • 现在,可以使用包含斜杠(/)字符的SKU将捆绑包产品成功添加到管理员订单中。 以前,管理员用户无法使用此方法将产品添加到管理员订单,Commerce引发了JavaScript错误。
  • 为相应的简单产品启用​ Qty Uses Decimal ​后,管理员用户现在可以为新添加的捆绑包选项设置十进制默认值。 以前,只能为保存的选择设置小数值。
  • 优化了使用大量选项保存捆绑产品的性能
  • 现在,无需在产品选项中复制SKU,即可成功导入捆绑包产品。 以前,当您导入包含重复条目的捆绑产品时,Adobe Commerce会在产品选项中创建多个重复的SKU。
  • 现在,当捆绑包中的某个产品缺货时,可以正确计算捆绑包产品价格。 以前,如果属于捆绑销售的产品缺货,则会将其从价格计算中删除。
  • 现在,在购买捆绑产品的最后一个所需子产品时,捆绑产品会显示为缺货。 以前,当简单的产品缺货时,店面中捆绑销售的产品会显示为现货。
  • 解决了使用addBundleProductsToCart突变将带有非必需选项的捆绑产品添加到购物车时的性能问题。
  • 启用​ Show out-of-stock products ​配置设置后,categoryList查询现在会按预期返回所有捆绑包选项。 以前,缺货的选项不包含在查询响应中。
  • 现在,当目录价格范围设置为website时,使用POST V1/products创建的捆绑产品将成功。 以前,出现完整性约束冲突。 GitHub-35595

缓存

  • 现在,在缓存设置为Fastly CDN (Caching Application=Fastly CDN)的商店中,购物者可以看到类别。 这同时影响了客人购物者和注册客户。
  • 现在,登录后的缓存Cookie在浏览网站后是相同的。 以前,登录控制器发送错误的缓存Cookie,并且页面可能已缓存多次。
  • 在包含CMS块的CMS页面上,来自GraphQLGET操作的响应现在按预期在Fastly缓存中清除。 现在,后续计划更新会显示这些页面的准确、更新内容。
  • 现在,当父产品的某个子产品已从管理员中保存时,其页面缓存会按预期清除。 引入了一项插件检查,以便像其他产品类型一样,使可配置变体的缓存失效,而不管索引器状态(计划或实时)如何。 以前,在管理员更新可配置变量后,店面上的价格不会正确更新。
  • 为AWS凭据添加了缓存机制。 凭据提供程序现在使用Commerce缓存来缓存从AWS检索到的凭据以进行EC2配置。
  • 现在,插件可按预期工作,该插件的目的是在保存与可配置产品关联的简单产品时添加可配置缓存标记。 当POST V1/products更新简单产品时,所有相关的可配置缓存标记都会按预期删除。 以前,并非所有价格都会在店面更新,缓存必须手动清空。 GitHub-36726

购物车和结账

  • Commerce现在通过在启用永久购物车时生成整页可缓存页面(例如,产品详细信息页面(PDP)和CMS页面)时不加载特定于用户的报价数据来优化性能。 以前,系统会在生成这些页面期间不必要地加载特定于用户的会话和引用数据,从而影响性能。
  • 自定义地址自定义属性现在按预期保存在数据库中。 以前,保存在数据库中的属性值前面会附加属性代码。
  • 改进了为产品属性生成购物车规则过滤器文本。 单个产品不再加载多次。
  • 现在,如果在结账过程中发生错误,且购物者不再执行之前的结账步骤,Adobe Commerce会显示信息性错误消息。 以前,购物者返回到送货页面。
  • cart查询不再返回虚拟购物车的配送方式和地址。 以前,当购物车包含物理和虚拟产品,并且所有物理产品都被移除时,购物车查询响应将继续包含送货信息。
  • 现在,当触发“添加到购物车”操作时,Commerce会显示信息性消息。 以前,店面并不总是按需要显示The requested qty is not available
  • 对于拥有大地址簿的客户,结帐页面加载时间已缩短。 Commerce现在仅处理​ Customer Addresses Limit ​设置中指定的客户地址数。 以前,Commerce加载整个通讯簿。
  • 当一件商品缺货时,现在可以按预期更改手推车中库存商品的产品数量。 以前,购物者不能在任何商品缺货时更改其产品数量。
  • AdvancedSalesRule产品属性过滤器现在可以正确处理十进制属性后端类型。 因此,将Coupon Type设置为​ No Coupon ​的购物车规则现在可按预期工作。
  • 现在,整个购物车折扣的全部金额按预期应用于包含捆绑包和可配置产品的购物车。
  • 客户分区Cookie现在将执行Cookie的域设置。 以前,即使共享了会话,迷你购物车在包含子域的商店中没有按预期更新。
  • 在区域ID处理期间,将订单发送到多个地址不再触发错误。
  • 现在,在购物车级别应用的固定折扣金额是正确的。GitHub-37496
  • 现在,当购物者在选择统一费率发运方法(将发运方法设置为条件的购物车价格规则适用)后应用优惠券时,优惠券将成功应用于订单。 以前,购物车页面显示“优惠券无效”错误,且未应用优惠券。 GitHub-34866
  • 当购物者使用Chrome自动完成填写其送货地址,然后在重新加载送货方法块之前单击​ 下一步 ​时,My billing and shipping address are the same ​复选框现在默认保持选中状态。 GitHub-33725
  • quote_item表中的applied_rule_ids值现在包含已应用规则ID的正确列表。 以前,此值仅包含上次应用的规则ID。
  • 现在,当从服务器中删除会话时,本地存储中的迷你购物车和客户数据会重置。 以前,删除会话文件时仍会显示此数据。
  • 启用永久购物车后,不再错误地从管理员合并离散购物车。
  • 结账配送步骤中的默认配送地址不再使用之前选择的店内配送地址进行填充。
  • 刷新缓存后,购物车中的产品不再从相关和追加销售产品列表中排除。
  • 购物车税和配送估算器现在可以准确地反映默认目标配置。 以前,当您配置默认纳税目标计算设置并指定省/市/自治区和ZIP时,Estimate Tax and Shipping ​下的购物车中只显示ZIP值。 这是由于Adobe Commerce在调用条件语句(用于从管理员设置默认区域ID)之前将区域ID设置为undefined所致。
  • 启用永久购物车后,Adobe Commerce在签出期间不再引发此错误: Invalid state change requested。 以前,引发此错误时,有时会创建多个具有相同quote_id的订单。
  • 迷你购物车现在显示反映购物车税务配置设置的捆绑产品价格。 以前,迷你购物车始终在捆绑产品的价格中包含税费。
  • 提高了依赖活动购物车的客户区段规则的性能,这减少了将产品添加到购物车所需的时间。
  • 从购物车页面提供的配送估计值现在准确。 collectShippingRates现在只设置一次。 以前,运费估计数是重复的。 GitHub-36648
  • 指定购物车中的产品缺货时,cart查询不再返回错误。 以前,使用此查询进行购买的购物者无法在商品缺货且结账页面为空白时完成购买。
  • 如果页面在登录移动环境期间重新加载,则对POST V1/guest-carts/<cartId>/shipping-information的来宾API请求不再返回cancel状态。 以前,Adobe Commerce引发500错误并记录此异常: TypeError: Argument 2 passed to Magento\CustomerCustomAttributes\Model\Plugin\ProcessCustomerShippingAddressCustomAttributes::beforeSaveAddressInformation() must be of the type string, null given
  • 现在,当应用购物车规则的​ Subtotal (Excl. Tax) ​条件时,可按预期计算免运费资格。 GitHub-36760
  • cart查询现在返回产品的正确层定价。 GitHub-29655
  • 已将信息性错误消息添加到结账页面,以指导购物者在配送页面上应用优惠券与所选配送方式冲突时进行购物。 以前,有一条信息告诉购物者返回上一页。
  • 现在,仅当需要身份验证弹出窗口时,才会将其初始化,而不是在启用了来宾签出时。 现在,当访客购物者尝试继续结帐,且访客结帐被禁用时,它会进行初始化。 GitHub-30672

购物车价格规则

  • 购物车价格规则产品子选择条件现在包括预期的total (incl.tax)选项。 GitHub-34871
  • If an item is FOUND/NOT FOUND in the cart with ALL/ANY of these conditions true目录价格规则条件现在可以正确与类别和SKU属性一起使用。 以前,在购物车价格优惠券逻辑中无法正确应用此条件,并且订单应用了无效优惠券。 GitHub-37660
  • 现在,您可以在禁用Magento_OfflineShipping扩展的情况下成功保存新的购物车价格规则。 以前,Adobe Commerce引发此错误: report.ERROR: Warning: Undefined array key "simple_free_shipping"GitHub-37580
  • 现在,当为商店配置了与一种配送方式相关的购物车价格规则,并且在结帐期间此配送方式更改为另一种配送方式时,购物车价格规则可按预期应用。 以前,从未在sales_order_item表中更改applied_rule_ids值,并且购物车价格规则未应用于该订单。

目录

  • 运行bin/magento cache:cleanbin/magento cache:flush不再刷新整个内置或Varnish全页缓存,除非另外指定。 GitHub-38301
  • catalog_product_price dimensions-mode设置为website时,商家现在可以使用产品轮播创建CMS块。 以前,Commerce未保存块并引发此SLQ错误: report.CRITICAL: PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table
  • 在产品详细信息页面上更改产品颜色时,Commerce不再显示重复图像。 GitHub-36243
  • 在大型多商店环境中添加新商店或更改现有商店后,优化了同步网站特定值的算法。
  • 已改进缓存图像文件的清理过程,以避免在pub/media/catalog/product文件夹中创建隐藏目录。 以前,隐藏的目录在清理操作期间会导致磁盘空间问题。 该操作可以终止,这会留下从未删除的临时隐藏目录。
  • 现在,已正确计算捆绑产品价格,并且解决了计算价格时的操作顺序问题。 GitHub-35665
  • 已从catalog_product_price索引查询中删除不必要的子句,这改进了此索引器在具有大型目录的存储上的性能。 GitHub-32382
  • 当此字段留空时,Commerce不再将产品描述文本插入到产品详细信息页面​ Meta Description ​字段中。 以前,当产品描述包含由HTML生成器或其他HTML编辑器生成的HTML代码时,该页面会显示在元​ Description ​字段中,并且您不能将此字段留空。
  • 可配置产品PDP页面上的可配置产品选项不再受页面上的其他可配置产品选项的影响。 以前,当产品详细信息页面上存在产品轮播时,具有下拉属性的可配置产品不再触发异常。 当页面上存在其他具有样本选项的可配置产品时,可配置产品选项不可选。
  • 现在,将根据商店视图配置显示最近查看的产品信息。 以前,不会根据商店视图更新最近查看的产品数据,包括名称和首选语言。
  • 现在,在基于Chromium的Web浏览器中,Vimeo视频可在移动设备视图的产品页面上按预期播放。
  • 现在,bin/magento catalog:images:resize命令可正确为分配给具有自定义主题的自定义网站的产品生成产品图像。
  • 现在已根据​ 使用默认值 ​复选框按预期为默认存储保存具有NULLNOT NULL值的元数据。 以前,取消选中此复选框时,不会保存具有NULL值的元数据。
  • 商家现在可以从产品详情页面成功删除现有图像,然后上传具有相同名称的新图像。 以前,在这些情况下,店面产品页面不显示正确的图像。
  • 现在,当产品映像alt属性设置为空时,productDetail查询将返回产品名称而不是null。
  • 现在,包含可下载产品和实物产品的订单在完成后即包含指向可下载产品的工作链接。 以前,直到同一订单中的实际产品发货后,才能使用指向可下载产品的链接。
  • 现在,当某个类别从一个存储/根类别移动到另一个存储/根类别时,会更新URL重写。 现在,当子类别转移到新的父类别时,将删除过时的数据库条目。 数据库现在仅包含相关条目。 以前,url_path未使用正确的存储ID进行更新。
  • REST V1/products/<sku>/media终结点现在可以处理多个媒体图像的同时上载。 以前,在同时处理多个请求时,会创建不一致的数据,并在将数据保存到数据库时Commerce引发错误。
  • 现在,当使用新创建的客户帐户的购物者注销时,客户区段横幅会按预期运行。 以前,即使在该帐户会话结束(即,注册的购物者注销)后,也会显示为已登录客户区段创建的横幅。
  • 类别产品和产品类别索引器的部分重新索引性能已得到改进。 以前,indexer_update_all_views cron作业针对单个产品或类别多次运行重新索引器。
  • 当产品库存状态根据库存配置(数量)自动更新为缺货时,库存状态随后将在库存数量更新时更新为有库存。 以前,当产品的库存配置更新为库存时,stock_status_changed_auto设置会被忽略。
  • 启用​ Remember Category Pagination ​设置后,工具栏排序现在可在搜索页面上按预期运行。 GitHub-33220
  • 现在,在选中存储视图范围中的​ Use Default Value ​复选框时,多选属性会按预期保存。 以前,在编辑产品并保存默认值时取消选中此复选框。
  • 具有网站限制访问权限的管理员用户现在可以将图像添加到其范围内的产品。 如果管理员用户无产品访问权限,Commerce将显示一条信息性消息。 以前,具有网站限制访问权限的管理员用户无法将图像添加到他们有权访问的产品。
  • 在存储视图范围内编辑产品时,未覆盖用户定义的special_from_datespecial_to_datenews_from_datenews_to_date值。
  • 在多商店部署中,当产品名称因商店而异,Commerce现在在“管理员”>“Category”>“Products in category”中按名称对产品进行排序后显示正确的名称。 GitHub-36208
  • addProductsToCart突变现在返回带有数据的可自定义选项。 以前,它只返回空的可自定义选项。 GitHub-37599
  • 现在,当管理员用户在清除缓存但未重新加载类别页面后将新产品添加到类别时,产品位置和ID选择可正确显示。 以前,产品位置和选择不匹配,显示不正确。
  • 商家现在可以更新可下载产品计划更改的将来开始日期或时间。 以前,Adobe Commerce在可下载产品的未来开始日期或时间更新期间引发此错误: The downloadable link isn't related to the product. Verify the link and try again
  • 现在,店面上正确显示了产品延交状态。 以前,可发运的产品被错误地标识为延期交货。
  • 当管理员用户将商店视图从产品创建期间使用的视图更改为其他商店视图时,从管理员访问可下载产品不再会导致错误。 现在,当管理员用户将商店视图从所有商店视图切换到默认商店视图时,产品价格已成功转换为浮点数。 以前,Adobe Commerce会引发错误。 GitHub-37519
  • 现在,当use_config_manage_stock值等于1时,导出的产品具有正确的manage_stock值。 以前,此默认值不正确。
  • 当您保存使用自定义选项创建的产品时,Adobe Commerce在删除其图像后不再显示警告消息。
  • 现在,产品缩略图图像会按预期显示在产品重新上架时发送的产品库存警报电子邮件中。 以前,此图像不显示在警报电子邮件中
  • 类别树中的产品计数(管理员​ Catalog > Category)现在准确。 以前,无法从catalog_category_product_index表中检索类别产品计数。 已修复触发此错误的拼写错误。 GitHub-35417
  • 禁用主题view.xml中的product_image_white_borders时,产品详细信息页面上的主产品图像在页面加载期间不再明显下移。 以前,由于Fotorama JS中的高度设置不正确,导致产品图像在页面加载期间明显向下偏移。
  • 现在,当客户订阅了价格下降警报时,将会向客户发送有关产品价格下降的通知。 以前,由于应用程序级别的缓存,不能始终发送降价通知。
  • 在通过Web API创建产品属性的过程中添加了服务器端验证。 当​ Catalog Input Type for Store Owner ​字段值为Text FieldText AreaText EditorDateDate and Time时,您无法启用​ Use in Layered Navigation Catalog ​字段。 以前,类别和搜索结果中会忽略产品。
  • 现在,购物者打开页面、更改分页、导航到产品页面,然后返回到类别页面后,类别页面以正确的分页重新加载。 GitHub-36563
  • 当​ Display Out of Stock Products ​设置为​ ​时,作为可配置产品选项的缺货简单产品现在在店面中显示为已禁用。 以前,所有选项都显示为可用,无论其状态和实际可用性如何。
  • 更新特定商店视图中的网站范围属性不再覆盖全局范围中该属性的值。 以前,在相同的SKU和store_view_code中有多个行可用时导入产品价格,会导致默认和“所有商店”视图范围的价格不准确。
  • 商家现在可以从管理员将GIF图像添加到产品的图像库。 以前,Adobe Commerce显示此错误: imagecolorsforindex(): Argument #2 ($color) is out of range
  • 已添加检查以处理未定义数组键导致的错误。 以前,在生成声明性架构白名单期间出错。
  • Adobe Commerce现在返回自定义日期01/01/1970的有效结果。 以前,自定义属性返回此错误: Invalid input datetime format of value '1/01/1970GitHub-37274
  • 使用片段的routes查询现在可按预期返回类别信息。 以前,类别页面上发生内部服务器错误。 GitHub-35906
  • 已解决cataloginventory_stock部分重新索引过程的问题,索引器性能已得到改进。 以前,库存和产品类别无法准确更新。
  • 现在,当产品所属的类别已移至新父级时,Adobe Commerce会为产品生成301重定向。 GitHub-37039

目录规则

  • 现在,当通过计划更新启用目录规则时,该规则将正确地编制索引。 因此,现在可以正确生成折扣价格并编制索引。 以前,当两个目录规则可用,并且在第一个规则的目录规则索引操作完成之前在第一个规则之后激活一个规则时,不会为第二个目录规则生成目录规则折扣价格。
  • 现在,目录规则可按预期方式在多网站环境中应用。

可配置的产品

  • 商户现在可以在配置可配置产品时选择​ Skip quantity at this time ​和​ Skip image uploading at this time,而不会影响关联的简单产品的来源。 以前,选择​ Skip quantity at this time ​会导致产品源消失。
  • 当所有选项的价格都相同时,不再为可配置产品价格显示​ As low as ​标签。
  • 现在,具有网站权限的管理员用户可以将属于可配置产品的子产品保存在不同的商店上下文中。 重新索引流程现在会跳过这种可配置产品。
  • 计划更新禁用了一个子产品时,不再将具有两个子产品的可配置产品标记为缺货。
  • 提高了具有多个选项的可配置产品的保存操作性能。 以前,在产品保存操作期间可能会发生超时。 GitHub-36928
  • 现在,当购物者选择产品选项时,可配置产品价格的店面显示会按预期发生变化。 GitHub-37378

优惠券

  • 现在,当之前使用优惠券的订单失败时,可以再次使用每个客户使用次数有限的优惠券代码。 以前,取消前一订单时不会发布促销代码。
  • 包含空格字符的优惠券代码将不再失效。 以前,如果优惠券代码包含空格字符(在实际代码之前或之后),则验证失败。 GitHub-38048
  • 购物者现在可以使用由同一购物车价格规则生成的两个单独的自动生成优惠券代码。 当优惠券类型选择为Auto时,Uses per Coupon字段现在已启用(与优惠券类型=Specific Coupon类似) 。 如果代码不同,这又使购物者可以将多个优惠券代码应用于相同的购物车价格。
  • 现在,当购物者的一次性优惠券应用于的订单被取消时,该优惠券值会按预期恢复。
  • GET V1/coupons/<couponId>端点现在会像对自动生成的优惠券一样,返回手动创建的优惠券的完整预期响应。 以前,某些字段被忽略(例如,usage_limitusage_per_customercreated_at)。

cron

  • aggregate_sales_report_bestsellers_data cron作业不再创建非常大的临时MySQL表,现在已成功完成。 此cron作业现在为每个存储插入数据,而不是同时为所有存储插入数据。 以前,此cron作业可能导致No space left on device错误。
  • 通过阻止cron作业尝试获取不必要的cron作业锁定,cron_schedule表中的挂起记录数已减少。 以前,cron作业会在运行该作业时太晚时尝试获取锁。 cron_schedule中的Cron作业未标记为已错过,即使它们已经过了计划时间。 Commerce还在错误日志中重复显示此错误: report.WARNING: Could not acquire lock for cron job: indexer_update_all_views
  • 修复了cron表达式中按零分的致命错误。 GitHub-37804
  • 通过在报价表中添加store_idupdated_at columns的复合索引,sales_clean_quotes cron进程已优化为运行得更快。 此更改可改进处理多个报价时的cron作业性能。
  • 管理员用户现在可以查看bin/magento cron:run进程当前正在执行的任务。 当前正在运行的进程的标题现在列出了组和作业名称。 GitHub-34321

客户

  • Adobe Commerce现在根据配置设置在“编辑客户”页面上显示​ Date of BirthTax/VAT NumberGenderTelephoneCompany ​和​ Fax ​字段。 GitHub-36196

客户区段

  • 客户区段条件现在会按预期加载所有匹配的客户。 以前,客户区段匹配客户列表不包含所有匹配的客户。

EAV

  • EAV索引器不再要求在批处理期间删除不可见实体。 默认情况下,索引器不再批处理不可见产品,索引器性能也得到了改进。

电子邮件

  • 包含变音符号或重音符号的电子邮件(即utf8电子邮件)现在受客户和公司支持,也受来宾和注册客户下订单的支持。 以前,Commerce不保存包含变音符号并显示此错误的客户记录: Something went wrong while saving the customer
  • 电子邮件发件人名称不能再包含冒号字符。 新的验证规则现在阻止保存管理员​ Stores > General ​的“存储电子邮件地址”部分中包含冒号字符的发件人姓名。 以前,商家可以保存包含冒号字符的发件人名称,这会导致邮件服务器错误。
  • 对于具有自定义图像选项的产品,图像选项不再显示为返回客户电子邮件(默认HTML)中的模板标记。
  • 当“分配公司管理员”电子邮件中包含CMS Block URL变量时,公司管理员详细信息现在会按预期保存,并且管理员会被正确重定向。
  • 客户电子邮件地址现在可以包含变音符号。 以前,前端验证禁止创建电子邮件地址中包含变音符号的用户。 GitHub-12075
  • 库存和价格警报电子邮件现在会根据为网站默认商店视图配置的语言进行翻译。 以前,不翻译这些电子邮件。
  • POST V1/order/notify-orders-are-ready-for-pickup现在会发送电子邮件提醒客户,只有在订单就绪后才能提货。 现在,仅当无一例外履行了请求时,才会触发电子邮件。

框架

  • 改进了在输出带有Varnish的HTTP标头时添加UNCACHEABLE值的调试。 以前,仅输出HITMISS值。 GitHub-37912
  • 添加了支持默认Varnish压缩处理的代码。 GitHub-38309
  • bin/magento varnish:vcl:generate命令现在包含input-file argument。 这支持向Git存储库中添加相对于Commerce根的自定义VCL。 GitHub-37363
  • 从代码库中移除了对Varnish 4.x和5.x的支持。 GitHub-38304
  • composer.json中的phpcodesniffer-composer-installer已升级到v1.0.0。GitHub-36913
  • 修复了Magento\Reports\Block\Adminhtml\Shopcart\Product\Grid类中错误的PHP文档标记。 GitHub-38186
  • 在编码实践要求app/etc/env.php文件中包含的任何缓存部分都将包含前端部分时创建的整个代码库中重构的代码。 此重构可解决升级2.4.4之前版本的Commerce部署时存在的潜在问题。 GitHub-38363
  • 澄清了在API调用期间提供值为0的库存ID时与StockItemValidator.php关联的错误消息。 GitHub-31107
  • CompositeTagGenerator中的$tagGenerators添加了默认空数组,以防止依赖项注入编译期间出错。 以前,在禁用Magento_DirectoryGraphQlMagento_StoreGraphQl模块的情况下运行bin/magento setup:upgrade命令会导致错误。 GitHub-38165
  • 已删除未使用的AlgorithmProviderFactory类以及包含JweAlgorithmManagerFactory.phpJweContentAlgorithmManagerFactory.phpJwsAlgorithmManagerFactory的类中该类上的依赖项。 GitHub-37783
  • var/log/system.log文件不再包含main.INFO error消息。 菜单条目日志已从INFO级别移至DEBUG级别。 以前,var/log/system.log文件被如下消息所淹没: Add of item with id Magento_Theme::design_config was processed …
  • exec()返回false时,Redis预加载不再失败。 已将验证添加到预加载过程,以防止array_combinefalse作为第二个参数接收。 因此,当exec()返回false时,预加载将继续运行。 GitHub-37509
  • 已重构Magento_CatalogWidget模块,将$block转义函数替换为$escaper转义函数。 GitHub-37107
  • Swaziland在整个代码库中已更新为EswatiniGitHub-37873
  • 已将新尼加拉瓜货币(NIO)添加到可用货币列表中。
  • app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php中将reponseBody变量的名称更改为responseBodyGitHub-38093
  • 解决了在启用了小数数量的产品的事务处理中发生的小计舍入错误。 GitHub-37817
  • 现在,管理员客户网格的日期过滤器可根据指定的区域设置按预期工作。
  • 由于$schemaPatch变量数据类型,bin/magento setup:upgrade命令不再失败。 以前,字符串值被传递到get_class函数,这会导致错误。 GitHub-37545
  • 为Adobe Commerce Cloud上的从属连接启用synchronous_replication时不再发生严重数据库读取失败。
  • 现在,如果连接在您为使用者设置max_messages = 0时在事务期间超时,则恢复到MySQL数据库的连接。 以前,连接被终止。
  • magento/module-release-notification核心模块在2.4-develop代码中被标记为已弃用,注释为: Starting from Magento 2.4.7, Magento_ReleaseNotification module is deprecated in favor of another in-product messaging mechanism
  • 现在,代理代码生成会按预期为生产模式下运行的部署生成代理和工厂文件。 GitHub-35252
  • 印度拉达克州现在作为选项列在管理员地址​ State ​下拉菜单中。 GitHub-33698
  • 现在,事件倒计时滚动条在类别页面上按预期显示。
  • 已从代码库中移除禁止的@author标记,这些模块包括: Magento_user-variable-weeMagento_CatalogMagento_CustomerMagento_WishlistMagento_Review Tax以及整个框架。 GitHub-37245GitHub-37246GitHub-37249GitHub-37263
  • User模块中的JSON序列化程序已替换为更准确的新序列化程序(JsonHexTag)。 以前,当包含未转义元素时,Commerce在尝试使用由常规序列化器序列化的数据时有时会崩溃。 GitHub-31377
  • 运行完全重新索引(bin/magento indexer:reindex)时不再发生管道损坏错误。 AMPQ连接现在在进程管理器分支进程之前关闭。
  • 队列消息验证器现在验证所有数组元素的子类型。 以前,Commerce引发异常。
  • app/etc/env.php中每个主题的队列连接配置现在可以正常工作。 以前,使用自定义交换创建新消息队列时,产品警报队列无法正确生成。 如果使用自定义交换在app/etc/env.php中配置了主题的队列连接,则会为该自定义交换的所有主题创建新的绑定。 商家无法处理产品提醒。
  • 将MariaDB服务器升级到版本10.5.1或更高版本时,使用/* mariadb-5.3 */注释标记的临时格式在bin/magento setup:install期间不再导致错误。
  • 现在,AwsS3驱动程序可按预期工作,取代基本默认文件存储实施。 以前,当为文件存储配置此驱动程序时,数据可能会损坏。 GitHub-37844
  • 使用$_ENV变量的bin/magento config:showset命令现在支持使用包含逗号或大写字符的网站和商店代码。
  • 添加了在Tailwind 3中使用的具有!important的类以支持CSS布局。 GitHub-37568
  • trim-input.js文件中已添加缺失的jQuery依赖项。 GitHub-37683
  • 事件特定的详细信息现在作为log方法的第二个属性(context)传递。 GitHub-37879
  • 已将宽高比值添加到目录图像,并从UI框架中删除了不必要的脚本。 GitHub-37691
  • 修订了由无效XML配置触发的错误消息,以提供更多信息。 GitHub-37788
  • 已重构的已弃用代码,这些代码与在整个代码库中创建动态属性有关。
  • 对于产品数据库极为活跃的大型商店,索引器的性能已得到改进。 现在,索引器对每个索引的最新产品信息编制一次索引,而不是多次。 以前,产品会从网站上消失,并且网站上的产品数据可能会过期。 GitHub-30012
  • 当从属数据库连接可用时,mview_state记录状态现在可以准确地指示基于更改日志活动的状态。 以前,即使更改日志中没有新条目,这些记录在云部署中仍处于waiting状态。
  • 添加了对货币格式的precision选项的支持,以保留与已弃用ZendCurrency类的功能等同性。
  • Cookie消息已转换为可观察属性,开发人员现在可以操纵状态,这可能会触发UI更改。 以前,Cookie是只读的,无法控制。 GitHub-37308
  • 现在,当管理员的Commerce实例连接到S3存储时,他们便可以生成发票。 以前,Commerce显示此错误: Cannot create image resource. File not foundGitHub-35706
  • 当VIES验证服务进行的增值税编号验证失败时,Adobe Commerce现在会按预期记录例外消息。 GitHub-36065
  • 在创建管理员角色期间,已从用于获取管理员角色的查询中删除了Administrators名称。 GitHub-36998
  • app/etc/env.php文件中包含无效的数据库用户名时,bin/magento setup:config:set命令不再失败。 GitHub-37409
  • 在默认Admin UI组件中对保留字按列排序不会再导致var/log/exception.log中出现SQL错误。 GitHub-37423
  • 添加了AddDataForCostaRica.php以提供哥斯达黎加的国家信息。 GitHub-37382
  • 改进了用户尝试从管理员访问无效URL的方案的错误消息。 GitHub-35682
  • 货币符号的Param $options[position]现在按预期工作,并且支持货币符号位置的自定义。 以前,在从Zend Framework 1迁移后,toCurrency方法忽略position参数。 在整个管理员界面中都会出现此问题。
  • 已重构的已弃用代码,这些代码与在整个代码库中创建动态属性有关。
  • 通过扩展Adobe Commerce中的TinyMCE编辑器和2.4.6之前的Magento Open Source版本而创建的自定义样式格式现在可在Page Builder text内容类型中按预期使用。 以前,自定义样式格式会被忽略,并且只有在升级到Adobe Commerce 2.4.6-p1后才会加载默认格式。 GitHub-36950
  • 已将以下信息性注释添加到quote.php文件: Important: This method also copies customer data to quote and removes quote addressesGitHub-37400
  • 锁定提供程序的实例化现在通过\Magento\Framework\Lock\Proxy类。 锁定提供程序现在通过app/etc/env.php文件配置了lock设置。
  • 已对订单实施互斥,以防止在并发请求更新期间出现争用情况。 以前,订单取消的并发请求(争用条件)导致inventory_reservation表中出现重复条目。
  • populateWithArray函数现在将对象属性正确转换为大小写,使其与AbstractModel getter和setter兼容。 以前,当数据属性名称一行包含多个大写字母时,Snake大小写格式不正确。
  • 现在,保存产品后,catalog_product_entity_varchar表中的自动增量值将正确递增。 以前,此值会增加十。
  • 当您尝试刷新JavaScript/CSS缓存时,Adobe Commerce不再引发此文件系统异常: No such file or directory
  • customer_entity_int中的value_id值现在正确递增。 更新包含这些属性的实体时执行更新查询,而不是insert on duplicate key update。 因此,在EAV模型中使用的自动增量列现在以线性方式增长。 以前,对列的自动递增过程由于插入查询失败而跳过值。 GitHub-28387
  • 从不需要的id属性中删除不必要的空格。 (此错误是由Adobe Commerce 2.4.6代码更改引入的。)
  • 当存储处于单存储模式时,存储代码不再出现在存储URL中。 GitHub-36831
  • 样本Helper已重构,以删除误导性的导入别名。 GitHub-31373
  • 管理员用户现在可以按预期删除或重命名sitemap.xml文件。 以前,管理员用户可以从管理员中删除文件,但该文件仍保留在文件系统中。 GitHub-37468
  • 当已应用优惠券的订单的付款失败时,不再将优惠券标记为使用。 现在,队列消息会按照使用者启动时发布消息的顺序进行处理。 以前,从队列中提取第一条消息只是为了检查消息是否已排队,之后被拒绝,这导致了最后处理第一条消息。
  • 当用户尝试打印传送标签时,Adobe Commerce不再在日志文件中引发异常。 以前,如果扩展修改包含附件的响应标头,则系统在日志文件中引发异常。
  • elements.xsd中添加了对更多HTML类的支持。 GitHub-36891

常规修复

  • app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php中将reponseBody变量的名称更改为responseBodyGitHub-38093
  • 计划产品更新不再清除多选属性数据。 以前,当计划产品更新时,产品的多选属性数据会被错误清除。 GitHub-37675
  • 使用非默认存储范围保存产品时,使用ProductRepository加载时不再导致未更改属性成为存储范围。 GitHub-8897
  • 现在,在启用了访问限制的情况下,购物者可以访问配置为层次结构节点的页面。 以前,发生无限重定向循环,且浏览器引发此错误: ERR_TOO_MANY_REDIRECTS
  • 在产品详细信息页面上的自定义字段验证中添加了信息性错误消息。 GitHub-38006
  • 名称字段中现在可以使用特殊字符。 以前,名称验证器中限制了&字符,当客户名称包含&字符时,这会阻止客户添加或编辑操作。 GitHub-38080
  • 对特定商店具有受限访问权限的管理员用户现在可以使用批量更新操作来更新产品审查。 以前,Commerce引发此异常: report.CRITICAL: TypeError: array_intersect(): Argument #1 ($array) must be of type array, null given in app/code/Magento/AdminGws/Model/Models.php:439
  • storefront登录页面的“显示密码”功能现在可按预期显示密码。 以前,不会显示密码。 GitHub-37432
  • 产品比较列表现在始终特定于网站来访购物者,不包含从其他网站添加的产品,包括分配给两个网站的产品。
  • 将包含表情符号的CMS内容块保存到数据库后,该表情符号将不再被截断。 以前,由于默认数据库配置不支持四字节字符,因此在emoji后截断内容。
  • 当使用​ Products进行配置以匹配 ​设置时,相关产品规则的​ ​条件之一现在可以正常工作。 以前,此规则不标识任何产品。
  • CMS页面网格现在根据分配给管理员用户的存储视图来筛选页面。 以前,不应用角色范围。
  • 当登录页面上的​ Show Password ​复选框处于活动状态时,密码现在按预期显示。
  • 客户实体(rp_token)验证的“重置密码令牌”系统属性已在客户帐户创建期间从属性验证中删除,并且变音符号验证仅包含在生成的客户电子邮件中。 以前,Commerce未保存客户记录并显示此错误: Something went wrong while saving the customer
  • 删除列后,您现在可以成功地将编辑内容保存到管理页面和块网格。 GitHub-37525
  • 公司管理员现在可以从店面添加公司用户。 以前,当管理员用户尝试添加新用户时,Commerce会记录此错误: report.CRITICAL: Error: Call to a member function __toArray() on null in app/code/Magento/LoginAsCustomerLogging/Observer/LogSaveCustomerObserver.php:123
  • 客户现在可以在其他设备上重置密码后,使用新密码从一台设备成功登录。
  • 管理员客户地址​ 省/市/自治区 ​字段现在会按预期保留上次保存的值。 以前,当您从此字段中移除值时,Commerce继续在​ 州/省 ​字段中显示已删除的值。 GitHub-36846
  • 当您首次取消选择,然后选择新创建的CMS页面时,Adobe Commerce不再引发约束冲突错误。
  • 现在,层次结构网站根已正确分配到新创建的CMS页面。 以前,在新创建的CMS页面上,层级网站根目录选择不匹配。
  • 启用​ RSS Feed Top Level Category ​后,在请求类别的RSS源期间不再发生错误。 以前,在启用​ RSS Feed Top Level Category ​时,浏览RSS馈送类别页会导致日志文件出现ElasticsearchCRITICAL错误。
  • 现在,如果在创建用户角色期间更改了角色范围,则会为gws_store_groups保存正确的值。 以前,将角色范围选为All时,gws_store_groups值会在用户创建期间保存为null,但在角色编辑期间不会保存为null。 此外,如果将角色范围选为Custom,则gws_store_groups值始终保存为null。
  • 启用​ Add Store Code to Urls ​设置后,现在可以通过单击“管理员登录”页面上的“管理员重置密码”链接来访问“重置密码”页面。 管理员重置密码链接以前打开了登录页面或404页面。
  • 现在,管理员统计信息仪表板中的日期范围是根据在配置设置中设置的时区来计算的,然后转换为UTC以从数据库中提取数据。
  • 在筛选存储视图,然后在管理员​ Content > Hierarchy ​上单击​ Save ​后,CMS层次结构筛选器按预期工作。 以前,单击​ Save ​刷新页面,但上下文已丢失,并且选定的商店视图不再显示。
  • 单击​ Send invitation ​按钮(管理员​ Marketing > Private sales > Invitation)现在可随表单密钥一起提交POST请求并成功发送邀请。 以前,当您单击此按钮时,HTTPPOST方法和表单键都不存在。
  • 现在可以使用AWS S3将零字节文件成功复制到远程存储。
  • 现在,在为商店ID与网站ID不匹配的其他网站创建客户时,管理员用户可以从管理员中添加新的客户地址。 以前,Adobe Commerce显示此弹出消息: Something went wrongGitHub-36582
  • CMS块编辑器页面现在显示正确的构件block_id值。 GitHub-29644

礼品卡和包装

  • 商家不能再创建具有负值的礼品卡。
  • setGiftOptionsOnCart突变现在会按预期从订单中删除礼品包装。 现在在购物车级别取消设置gift_wrapping_id的值。 以前,即使在购物车级别取消设置gift_wrapping_id的值,订单下达后该值也会更新为之前的值。
  • 现在,当从应用礼品卡的订单中处理简单产品的部分退款时,礼品卡帐户将按预期保持有效。 以前,会删除礼品卡帐户。
  • 现在,从购物车中删除礼品消息时,setGiftOptionsOnCart突变会成功更新数据库。 以前,数据库中不会更新消息详细信息,并且不会从购物车中删除礼品消息。
  • 礼品注册表Event Information标签现在已按预期翻译。
  • 现在,可以正确计算自定义礼品卡金额的小计。
  • 现在,使用多个地址结账时可正确应用礼品卡。 以前,多地址装运的礼品卡金额应用不正确,导致礼品卡金额无效。
  • 现在,在getInfoBlockHtml()调用期间完成模拟后,send()调用期间将开始模拟,并且不会记录任何错误。 以前,system.log文件会因以下错误而泛滥: main.ERROR: Environment emulation nesting is not allowedGitHub-35603
  • 您现在可以使用updateCartItems突变来更新购物车中的礼品卡。 以前,仅购物车中的卡数量可以通过此突变进行更新。
  • 礼品包装现已按预期包含在基于合并购物车的报价中。 以前,已成功合并礼品消息,但无法封装选定内容。
  • addProductsToCart突变现在已成功将礼品卡添加到购物车。 以前,此查询需要礼品卡收件人姓名,但会返回发件人姓名。 Adobe Commerce引发此错误: Please specify a recipient nameGitHub-36665

Google Tag Manager

  • Google Tag模块现在可将正确的数据推送到Data Layer。 以前,页面展示数据不会推送到数据层。

GraphQL

  • 在查询包含可配置产品的列表时,getCustomerWishlist查询不再导致内部服务器错误。
  • customerCart查询现在按预期返回捆绑产品的所有应用折扣。 以前,应用于捆绑产品的总折扣返回为零。
  • 在查询包含可配置产品的列表时,getCustomerWishlist查询不再导致内部服务器错误。
  • is_subscribed标志的声明、其解析程序、缓存和相关测试已从CustomerGraphQl模块移至NewsletterGraphQl模块。
  • addProductsToCart突变不再报告user_errors中的不相关错误。 以前,user_errors中包含与购物车相关的错误以及预期的操作错误。 GitHub-37908
  • products查询产品筛选器现在可以返回部分匹配结果和完全匹配结果。 新match_type (PARTIAL, FULL)属性支持指定匹配类型。 以前,查询仅返回完全匹配项。
  • 已将互斥体添加到addConfigurableProductsToCart查询,以防止并发请求更新期间出现争用情况。 以前,当商家发送两个并行请求以将相同的配置产品添加到购物车时,会添加两个具有相同产品SKU的单独项目。 GitHub-37847
  • 当​ Use in Layered Navigation ​设置为​ Filterable (no results) ​时,GraphQL响应中的产品聚合现在包括非零的属性值。 以前,只返回非零值。
  • 针对涉及自定义产品属性的购物车相关操作,改进了setShippingAddressForEstimate查询的性能。 以前,在参数作为变量发送时,查询会加载所有产品属性。
  • products查询ConfigurableProduct.configurable_options字段现在仅返回至少具有一个已启用产品的值。 以前,此字段返回禁用的简单产品。
  • 通过减少GetCategories query生成的不必要的SQL查询数,提高了其性能。
  • GraphQL库组件的地址错误处理现在可按预期运行。
  • 现在,当动态定价设置为“否”且应用折扣时,products查询返回所有相关店面定价详细信息。 以前,不会返回产品的价格范围。 GitHub-35649
  • GraphQL事务名称现在仅包含在New Relic日志中的顶级查询名称。 以前,事务名称还包括辅助查询名称。
  • GraphQL库组件的地址错误处理现在可按预期运行。
  • 当产品的可见性设置设置为Catalog时,对该产品的products查询现在可以正确解析该设置。 以前,提供的任何过滤器都会切换到Visibility: Catalog设置。 GitHub-36591
  • 现在,当产品价格已配置为含税时,customer查询会返回包含订单税的product_sale_price字段。 GitHub-36946
  • 类型DateTime的产品属性现在映射到产品查询中的FilterRangeTypeInput筛选器。 以前,这些属性映射到FilterMatchTypeInput。 作为此更改的结果,筛选DateTime属性的查询需要fromto值,而不是匹配值。
  • 现在,customer查询在按商店ID进行筛选时,只按预期返回与特定商店视图相关的客户评论。
  • items.redirect_code响应值包含null值时,categories查询不再返回错误。 GitHub-36675
  • 现在,在完全缓存清理后,基于规则的相关产品会按预期在GraphQL响应中加载。 以前,没有为请求的实体加载负责基于规则的匹配的product EAV属性,尽管在重新加载店面产品页面后加载了这些属性。
  • 成功重置密码后,changeCustomerPassword突变现在会按预期触发电子邮件。
  • 现在,当URL重写的Target Path是绝对URL时,urlResolverroute查询会返回结果。 以前,urlResolver查询在用于检索重定向数据时返回NULL。
  • 当存在多个存储视图时,products查询现在返回正确的标签。 GitHub-29635
  • categoryList查询现在按预期返回捆绑产品的子产品在options块中填充的product节。 以前,不会返回有关捆绑产品子产品的信息。
  • route查询现在会按预期返回类别和产品的路由,而不会出现内部服务器错误。 GitHub-36544
  • 现在,在选择多个类别时,products查询会提取url_key值。
  • product查询现在仅返回分配给指定共享目录的产品聚合。 以前,未分配给共享目录的产品聚合数据会显示在分层导航中。
  • OptionValueProviderget()方法现在按预期返回基于给定option_id的属性选项值。 以前,它会返回错误。 GitHub-35910
  • products查询现在返回所有可用的聚合(过滤器)及其正确翻译的标签。 以前,价格和类别聚合标签无法按预期进行转换。 GitHub-36140
  • ProductInterface上查询related_productsupsell_productscrosssell_products时,您现在可以使用片段ProductCardGitHub-29769
  • products查询现在会按保存顺序返回相关、追加销售和交叉销售产品。 GitHub-36461
  • GraphQL查询现在会返回按位置排序的相关产品数据。 GitHub-33010
  • category_url_path已添加到ProductAttributeFilterInput,它支持在单个查询中请求某个类别的所有产品。 GitHub-32460
  • 更正了以下错误:设置当前存储在GraphQL中的方法是在处理验证的方法之前执行的。 GitHub-31336

图像

  • 管理员收藏夹图标上传表单现在支持.ico文件类型。 GitHub-34858

导入/导出

  • 产品导入过程现在使用正确的分隔符解析值。 以前,导入过程使用管道(“|”)运算符来解析多选值,直到确定的值分隔符不等于缺省值为止。 导入过程随后失败。
  • 现在,当通过CSV导入更新URL Key值时,会自动创建301重定向。
  • 运输表费率现在按预期在表费率导入CSV文件中更新。 表速率上载文件会暂时存储,直到异步配置处理器cron作业运行为止。 此cron作业会选取文件的新位置并相应地对其进行处理。 以前,表速率没有按预期更新,因为异步处理器在错误位置查找文件。
  • “导出文件”网格现在显示所有导出的文件,而不考虑时间戳。 以前,网格不显示具有相同时间戳的所有导出文件。 GitHub-36951
  • 现在可以成功导入带有可自定义选项的产品。 以前,选项数据在导入过程中会丢失。 GitHub-37598
  • 现在,导出的CSV文件中的特殊字符可在Excel中按预期使用。 GitHub-37921
  • 使用​ Customers and Addresses (single file) ​导入库存来源和客户地址 选项现在已成功完成。
  • 由于内存不足,产品导入不再失败。 以前,由于内存不足,将任意数量的产品导入到已包含约1000万个产品的数据库中失败。
  • 当没有要导入的有效数据时,验证检查现在会按预期停止导入过程,Commerce现在显示此错误: There are no valid rows to import。 以前,验证在这些条件下通过,但导入过程失败,出现以下消息: entity values are mixedGitHub-32905
  • 使用同一产品导入URL密钥时,不再覆盖或删除现有的默认存储视图密钥。 现在,仅当没有被覆盖的url_key值时,才会为存储视图重新生成URL重写。 以前,使用相同的URL键导入URL会重写现有的默认存储视图URL键。 (key_store URL重写已删除,但产品默认商店视图级别上的URL重写仍设置为key_store。)
  • 在导入期间,产品计数不再意外更改。 现在,缓存刷新将推迟到导入过程之后。
  • 计划导入操作的状态现在准确地表示导入操作是成功还是失败。 以前,所有操作都记录为成功。
  • Commerce现在在导入客户记录期间会考虑​ Disable Automatic Group Change Based on VAT ID ​设置。 以前,忽略导入文件中的disable_auto_group_change值。 GitHub-36409
  • Magento\Framework\Convert\Excel现在已成功处理前面有空格的数字。 Excel XML现在将字段编码为String。 以前,Excel编写器将这些值编码为number,从而导致文件无效。 GitHub-33422
  • 商家现在可以指定显示导入数据的区域设置以及数据验证器应如何解析此数据。 如果未指定区域设置值,Adobe Commerce将使用默认配置区域设置(而不是默认的存储视图)来解析数据。 在管理中,导入和导出过程继续使用管理用户界面区域设置,分别导入、解析和设置数据格式。
  • 导入由语言环境设置与导入产品的管理员用户不同的管理员用户创建的具有country_of_manufacture属性的产品时,不再引发验证错误。 以前,此导入操作可能会导致country_of_manufacture属性出现验证错误。
  • 库存源数据现在由库存导入流程成功导入,Commerce现在会在导入流程完成时显示完整的通知消息。 以前,缺少通知消息。
  • 当索引器处于计划模式时,已删除了冗余索引器失效。
  • 现在,当use_config_manage_stock值等于1时,导出的产品具有正确的manage_stock值。 以前,此默认值不正确。
  • 在计划的导入操作期间,如果图像未成功导入,Adobe Commerce现在会在计划的导入网格中显示信息性错误消息。 以前,不显示错误消息。
  • 当缺少产品映像时,产品导入过程不再中断。 以前,在使用CSV文件导入第三方服务期间缺少产品图像时,Adobe Commerce显示以下错误: Maximum error count has been reached or a system error is occurred!
  • 在启用了B2B的部署中,客户从客户网格导出的性能已得到改进。
  • configurable_variations列中的属性值包含逗号时,产品导入过程不再引发验证错误。
  • 已从导出过程中排除解码。 导入后,CSV导出文件文本保持不变。 因此,重新导入后,描述不会更改。 以前,在导出和导入产品后,页面生成器编辑器中会删除HTML标记。
  • 作为环境变量添加的非默认配置(网站或存储范围)不再以递归错误中断app:config:import进程。
  • 导入后,处于保存时更新模式的目录搜索和价格索引符将不再失效。 以前,在导入新产品和现有产品时,Elasticsearch索引器文档版本会更改版本。
  • 产品报告现已导出到var目录。 以前,这些报告导出到文档根目录,在云实例中为只读目录。
  • 清空的多选客户地址字段不再中断或停止导出过程。

索引

  • 改进了在未设置目录规则时catalogrule_product索引器的性能。 GitHub-34784
  • 价格索引器性能问题已得到解决。 索引器的性能不再逐渐降低。 索引器已重构,通过更改临时表的创建方式来提高索引器处理速度。 这些临时表现在由更耗时的DELETE语句重新创建。
  • 价格索引器性能已得到改进。 在价格索引器中添加了索引提示,以缩短在索引期间触发的MySQL查询的运行时间。
  • 现在,所有索引器都使用相同的颜色来表示索引器状态。 GitHub-34648
  • 在未将规则分配给所有网站的部署中,目录规则产品索引器的性能已得到改进。
  • 当索引器设置为​ Update on schedule ​时创建自定义产品类型不再导致索引更新cron任务失败。 GitHub-36471
  • 由于目录权限索引而导致的店面产品详细信息页面上的显示问题已得到解决。 以前,Adobe Commerce先清除索引表,然后在完整catalogpermissions_productcatalogpermissions_category索引过程中重新索引。 在完成重新索引之前,目录权限在店面中无法按预期工作。
  • 当客户网格包含新创建的自定义客户属性时,bin/magento indexer:reindex customer_grid不再因MySQL错误而失败。 GitHub-36233
  • 更改多个索引器的索引器模式(即质量操作索引器模式更改)现在仅在当前模式与正在应用的模式不同时更改索引器的模式。 这通过防止不必要地访问数据库而提高了性能。 GitHub-36823

基础架构

  • 向管理员使用情况启用控制器添加了缺失的return语句。 以前,没有return语句,并且FrontendController类中的控制器处理不正确。 GitHub-31374
  • 已将MySQL CREATE TEMPORARY TABLE ... LIKE替换为重构的CREATE TEMPORARY TABLE,以符合MySQL 8.x。GitHub-37926
  • 当格式错误的HTTP请求发送到服务器时,Adobe Commerce在显示的错误消息中不再包含指向服务器根目录的完整路径。 现在,只有字符串才会作为第二个参数传递给explode方法。
  • restricted_classes.php已替换Zend_Validate_File_Upload。 以前,在上传大于php.ini 中配置的值的导入文件时,验证器崩溃。 GitHub-37281
  • 现在,由数据源模型提供并使用设置数据修补程序(通常来自第三方模块)安装的属性选项可用于客户区段规则。 以前,此组合不会返回与配置的区段匹配的客户列表。
  • 电子邮件模板引擎现在可以正确处理某些嵌套指令(例如,{{if}}{{depend}}...{{/depend}}{{/if}})。 GitHub-36438
  • 带有聚合数据的product查询现在返回布尔类型产品属性的正确标签值。 GitHub-29123
  • var/tmppub/static位于不同的文件系统上并且启用了​ CSS Merging Enabled ​时,合并后的CSS文件不再损坏。 临时文件是在与目标文件相同的静态目录中创建的,以确保两个文件位于同一文件系统上。 因此,对其重命名的调用是原子调用。 GitHub-29172
  • 修复了在int上调用成员函数getId()时可能发生的错误,该错误有时会在管理员中查看客户时触发异常。
  • 现在在设计主题配置处理器中对阵列类型强制进行类型检查。 GitHub-34440

Inventory management

  • 现在,在贷项通知单中包含产品数量退货后,产品会自动返回到库存状态。 以前,如果某个产品缺货,但贷项通知单退回了该产品的库存,则商家必须手动更改产品库存状态。
  • 通过删除冗余请求来重新索引默认源项目,改进了异步模式下库存索引器的性能。
  • 更正了Inventory Indexer中影响可配置产品店面库存计数准确性的问题。 GitHub-36421
  • 现在,通过REST V1/inventory/source-items更新库存源项目的工作速度更快。 调用不再触发对未更改库存产品的重新索引或清理缓存操作。
  • REST V1/products/<sku>现在会在更新产品的库存状态时触发自动股票重新索引。 以前,不会为要更新的产品触发股票重新索引。
  • V1/inventory/source-items更新子产品时,店面上的可配置产品库存状态现在会按预期更新。
  • POST <store_code>/V1/inventory/source-items REST调用现在验证返回库存源项目中空白的有效负载,并根据需要发送有关验证的错误消息。
  • 为产品启用​ No Manage Stock ​设置后,商家现在可以通知购物者订单已准备好提货。 以前,启用此设置时,Commerce显示此错误消息: Your order is not ready for pickup
  • 商家现在可以为订单创建贷项通知单,其中删除了与可配置产品关联的简单产品。 以前,商家无法创建贷项通知单,Commerce抛出TypeError异常。
  • 应用过滤器后,管理网格源计数现在会返回有效记录。 以前,getSourcesCount方法始终会在应用过滤器后返回源总数。
  • 当您使用“从股票移动到底部”选项对产品进行排序时,“类别”页面不再重定向到管理员功能板。 通过将SQL join语句放在条件语句中(仅在确保该语句尚未包含之后),该问题已得到解决。 以前,页面重定向到管理员信息板,并显示消息:Invalid security or form key. Please refresh the page
  • inventory_source_item表的AUTO_INCREMENT不再随每UPDATE操作增加。 以前,每次更新都会增加此表的AUTO_INCREMENT,这最终会在向inventory_source_item table添加新记录时导致AUTO_INCREMENT值超出范围。 因此,管理员用户在尝试从管理员创建新产品时收到以下错误: Numeric value out of range...
  • 管理员用户现在可以从管理员将产品添加到特定商店视图范围内的客户购物车Inventory management 。 以前,库存ID确定不正确,管理员用户无法将产品添加到客户购物车。
  • 清单和目录之间的同步不再依赖于​ Synchronize with Catalog ​配置设置。 以前,只有在启用此设置的情况下才能正确同步产品。
  • 当购物者从订单中扣除的产品数量在选择配送源时位于可用产品范围之内时,Adobe Commerce在重新加载页面后不再引发错误。
  • 现在,当批量库存更新更新可配置产品及其子产品Stock Availability值时,可配置产品库存状态会正确更新。 以前,无法通过批量更新将可配置产品及其子产品返回到库存。
  • 非默认来源的数据类型已更新为DECIMAL (12, 4),最多可支持8个整数位数,这与默认库存实施的限制相同。 该值现在与管理员添加和编辑产品页面同步,该页面支持对所有类型的库存源进行最多八位数的输入验证。 以前,仅支持​ Quantity ​字段(用于非默认源)的输入,最多可支持6位数。
  • 现在,在处理从店面订购的非默认来源以进行发运时,默认和非默认来源都会显示产品可销售数量的正确信息。 以前,Adobe Commerce显示的产品来源库存状态不正确。
  • \Magento\Catalog\Model\Product::getIsSalable()现在根据产品对象(\Magento\Catalog\Model\Product::getStoreId())中定义的范围返回库存状态。 以前,getIsSalable()根据当前范围返回库存状态,而不考虑产品对象。

记录

  • 更新了系统报告功能中的日期时间格式,在报告中包含来自日志文件的记录。
  • 管理员用户现在可以在管理员的批量操作日志部分中查看由集成创建的批量操作的日志。

登录

  • 在一个浏览器中重置密码并随后通过其他浏览器登录不会再导致异常。 GitHub-36447
  • 现在,在按预期激活帐户后,客户会被重定向到登录页面。 以前,客户会自动登录。

媒体集

  • 商家现在可以将同名不同大小写(混合使用大写和小写字符)的图像上传到媒体集。 Commerce以前,图像文件名在Page Builder中不区分大小写,并且名称与大小写不同的文件将被覆盖(在区分大小写的文件系统上托管)。

新闻稿

  • Commerce现在会先检查是否启用了新闻稿订阅功能,然后再接受新闻稿的新订阅者。 GitHub-33040

订购

  • 从管理员购物车移动到要订购的项目列表的产品现在会按预期从购物车中删除。 GitHub-37538
  • 商户现在可以按照预期,为部分以奖励积分支付的订单部分退款创建贷项通知单。 以前,当商家创建部分退货时,订单状态被错误地标识为“已关闭”,并且管理员订单页面不显示贷项通知单选项。
  • 当循环日志存档频率设置为每周或每月间隔时,管理员操作日志循环现在可按预期工作。 以前,如果设置每周或每月间隔,则不会轮换日志。
  • Commerce现在对部分取消的订单应用正确的折扣金额。 以前,在更改订单时,base_discount_cancelled列中计算的折扣金额计算不正确。 在折扣订单的发票中添加了对负值的支持。
  • 现在,导入订单时,REST V1/orders端点会按预期应用礼品卡。 以前,不会保存对此端点中礼品卡扩展属性的更改。
  • Commerce现在根据管理员用户在管理员中创建订单时提供的排序顺序对自定义客户地址属性进行排序。
  • 现在,当商家从此页面启动搜索时,“管理销售订单网格”页面会按预期加载。 以前,当商家尝试从该表中搜索订单时,页面冻结,Commerce在浏览器控制台中显示Request-URI Too Long错误。
  • 现在,当全部订单金额已用商店贷记加其他付款方式退款时,订单状态将标记为“已结”而不是“完成”。 以前,订单状态标记为完成,因为退款金额计算不正确。
  • 通过减少从数据库加载订单的次数,提高了OrderRepository::get()方法的性能。 以前,此方法会多次加载订单。 GitHub-36636
  • 商家现在可以为包含某些项目的订单生成贷项通知单,当其他订单项目可以退款时,这些订单的总数为零。 以前,当客户对订单中的某些项目享有100%折扣时,商家无法执行多次退款。
  • 在管理员对子产品进行重新排序期间,子产品与父产品之间的链接现在显示在订单页面上。 GitHub-37028
  • 订单页的题头部分现在包含有关已发送发票、贷项通知单和发运的预期信息。 GitHub-27474
  • 现在可以正确生成只包含一个可配置产品的订单的贷项通知单。 以前,isLast()函数未按预期返回trueGitHub-36722
  • 通过优化主数据查询改进了aggregate_sales_report_bestsellers_data cron作业的性能。
  • 在管理员用户无权访问客户网站的情况下,使用客户余额的离线退款创建贷项通知单时,Adobe Commerce不再引发错误。 以前,Adobe Commerce引发此错误: More permissions are needed to view this item,管理员用户无法创建商店退款。
  • 现在,当对包含捆绑产品的订单进行了部分退款时,订单状态是正确的。 以前,在发出部分退款后,即使剩余的订单尚未完成,订单状态仍被列为完成。 GitHub-37377
  • 首次从管理员使用一次性自定义价格生成订单时,购物者无法再使用自定义价格订购产品。 以前,如果订单包含具有自定义价格的项目,则此自定义价格适用于通过再订购功能下达的其他订单。
  • 购物者不能再在订单页面上保存不正确的订单状态。 发运项目时,订单状态不再从“完成”更改为“处理”。 以前,Adobe Commerce在购物者输入评论后保存订单状态之前不会检查当前订单状态。 GitHub-36562
  • 当正在返回的可配置产品被删除时,Adobe Commerce不再在storefront订单返回页面上引发错误。 Adobe Commerce以前记录此错误: report.CRITICAL: Error: Call to a member function getShipmentType() on null in magento2ee/app/code/Magento/Rma/view/frontend/templates/return/create.phtml:52
  • 销售订单网格现在会按预期与所有订单异步同步。 GitHub-36562
  • 现在,订单页面的客户订单部分中的按购买日期过滤功能可按预期工作。 以前,当向方法提供相同时区时,时区转换逻辑引发错误,从而导致JavaScript错误。
  • Adobe Commerce功能板现在在首次加载时显示正确的订单统计数据。 以前,仪表板显示不正确的订单信息,但一旦更新了时间段,则会显示正确的信息。
  • 现在,管理员用户在从管理员创建新订单期间选择商店视图后,会按预期重定向到订单页面。
  • GET V1/orders/<OrderID>端点现在按顺序返回有关可配置和简单产品的信息,而不管简单产品的库存状态如何。 仅当所选项目(产品)有库存或可供销售时,管理员用户现在才可以下订单。 以前,此API仅返回有关已有产品的信息。
  • 在启用了免运费且发运价格含税且计税是在折扣后应用时,贷项通知单页面不再崩溃。 以前,Adobe Commerce引发Division by zero异常。 GitHub-36800
  • 使用rest/V1/orders/{id}/comments端点在不提供订单状态的情况下发布有关订单的注释不再影响订单的显示。 以前,订单状态在sales_ordersales_order_grid表中记录为NULL,并且“我的订单”页面或“管理员订单”网格都不会显示订单。 GitHub-34180
  • 现在,如果发票、发运和贷项通知单包含的ID与订单ID不同,则可以成功地将它们及其相关订单一起从存档中移回。 以前,如果将订单移至存档并恢复,则当ID号不匹配时,该订单中会缺少发票、发运、贷项通知单记录。 GitHub-36847

页面生成器

  • 现在,在页面生成器中调整大小时,图像保持正确的纵横比。 GitHub-37493
  • 现在,当您尝试上传的图像大于指定的最大文件大小时,Page Builder会根据需要显示错误消息。 以前,对于小于指定最大值的已上传图像文件,Commerce会显示一条警报弹出消息。
  • CMS页面产品滑块现在包括已选择包含在滑块中的任何子产品的父产品。 以前,从滑块中排除父产品。
  • 禁用Magento_AsyncConfig模块后,电子邮件模板中现在会按预期显示HTML转换的内容。 以前,电子邮件模板仅包含原始HTML。
  • 在Chrome浏览器中,页面生成器保存操作的性能已得到改进。
  • 现在,您可以使用“管理员”>“Content”>“Pages”中的“页面生成器”选项,使用text元素在所有样式中插入复制的文本。 以前,页面生成器只显示纯文本,不保存样式。
  • 当管理员用户具有特定ACL时,在使用页面生成器编辑产品内容期间不再显示CORS错误。 管理员用户现在可以保存产品。 以前,页面生成器不会保存产品,因此保存过程会冻结。
  • 现在,精确的文件大小信息包含在页面生成器中已上传图像的图像预览中。
  • 现在,页面生成器页面元素在Chrome浏览器(v112)中以可接受的速度呈现。 以前,在Chrome浏览器中运行页面生成器来保存内容的速度较慢,Commerce在浏览器控制台中记录此错误: [ERROR] Page Builder was rendering for 5 seconds without releasing locks
  • 现在,当Page Builder视频元素直接链接到远程视频文件时,该元素可在iOS上的移动Safari浏览器中按预期自动播放。 以前,不显示预览图像。
  • 页面生成器现在在Chrome浏览器中按预期工作。 以前,并不总是保存在该浏览器中所做的内容更改。
  • 加载管理员产品编辑页面时,产品不再生成间歇性Uncaught TypeError JavaScript错误。
  • 现在,通过页面生成器编辑器上传的图像在​ Content > Media Gallery ​上标记为已使用。 以前,这些图像被标记为​ 在媒体集中的任何地方 ​都未使用。
  • 从页面生成器轮播向购物车添加产品时,不再重复页面中的项目数量,因为页面中有两个不同的小组件显示相同的产品。
  • 当您编辑超链接,然后保存HTML时,Page Builder不再将tabindex模板属性添加到超链接标记a
  • 产品小部件和页面生成器预览现在可正确处理HTML特殊字符。 以前,产品小组件无法正确显示包含&字符的SKU。
  • 现在,当您在预览模式下选择并更新完整内容块时,Page Builder文本元素内容会按预期更新。
  • 现在,可以将文本从一个页面生成器文本编辑器复制并粘贴到另一个页面生成器文本编辑器,操作方式符合预期。 以前,您尝试粘贴文本的页面无法保存,Adobe Commerce显示此控制台错误: [ERROR] Page Builder was rendering for 5 seconds without releasing locks.
  • 在旧版本的页面生成器中创建的页面生成器column-block内容类型现在可以正确显示。
  • 在从管理员创建产品期间,对产品元数据说明的过滤功能已得到改进。 以前,如果启用Page Builder,则会基于默认 {{name}} {{description}}掩码生成产品元数据描述。 默认的产品元描述掩码现在由{{name}}组成。 GitHub-36107
  • 添加不含内容的动态块不再触发错误。

付款

  • Commerce现在可以通过阻止在出现此错误时创建订单来正确处理来自PayPal的502错误。 以前,尽管PayPal发生了502错误,导致Commerce记录与PayPal记录不一致,但仍会创建订单。
  • PayPal Express结账交易现在包括子产品SKU和完整产品标题。 Magento/Paypal/Model/Cart.php文件现在会收集子产品SKU及其父产品标题,以使用子SKU标识产品标题。 GitHub-36808
  • 在Payflow Pro付款过程中,Card Security Code Does Not Match ​配置设置现在按预期处理。 以前,此评估过程从未完成,这会阻止签出。
  • 当购物者没有保管库令牌时,管理签出工作流中不再显示保管库付款方法选项。 GitHub-36273
  • 启用PayPal按钮后,现在可以隐藏​ Venmo ​按钮。 以前,无法从购物车、迷你购物车、产品详细信息或结帐页面中移除​ Venmo ​按钮。
  • 购物者现在可以在结账期间应用优惠券代码时选择配送方式。 以前,在这些条件下,Commerce会引发错误,并为订单分配固定运费。
  • PayPal和PayPal信用支付方法的店面处理问题已得到解决。
  • 解决了在本地支付启用时,Ideal payments支付的订单的后备URL问题。
  • 购物者再也无法在不添加姓氏的情况下创建PayPal订单。

Braintree

  • 现在,每家商店都保存了Braintree付款信息,购物者现在只能看到他们购物时所在的商店中保存的卡信息。 以前,购物者在结账时可以看到所有商店中存储的卡片信息。 GitHub-34253
  • 现在,当卡付款的保管库被禁用时,购物者可以使用Braintree付款方式将订单签出到多个地址。 GitHub-37615
  • 现在,在部署中,商家在其Braintree帐户中为同一货币拥有两个不同的商家帐户ID,则可以在正确的帐户中按预期捕获部分开票的订单。
  • 启用​ Enable Vault for Card Payments ​后,为按Braintree支付的订单创建第二张部分发票时,Adobe Commerce不再引发错误。 以前,当商家尝试创建第二张发票时,Adobe Commerce引发此错误: Your payment could not be taken. Please try again or use a different payment method. Payment method token is invalid
  • 当购物者更新其帐单地址时,不再在结账工作流中自动取消选择“Braintree保管库付款方式”选项。 以前,当购物者取消选择​ My billing and shipping address are the same ​按钮时,将取消选择付款方式。
  • 解决了从Adobe Commerce 2.4.5-p2升级后通过Braintree签出PayPal时出现的问题。 GitHub-37242
  • 现在,Google支付模式弹出运送地址字段中的地址可按预期呈现电话号码。 以前,电话号码缺失。
  • 现在,当Braintree响应包含threeDSecureInfo/eciFlag的空值时,通过Braintree成功下达订单。 以前,当此值为空时,在签出期间发生PHP错误。
  • 当购物者在迷你购物车中使用Adobe Commerce Pay结帐时在订单审核页面上应用优惠券时,Google不再引发错误。 以前,购物者被重定向到404页。
  • 购物者现在可以使用Braintree支付和Adobe Commerce 2.4.6(具有不可见的ReCAPTCHA v2或v3)完成结账。 GitHub-37241
  • 购物者无法再单击​ PayPal ​按钮来购买可配置产品,而无需先选择所需的选项。 以前,购物者可以单击​ PayPal ​按钮,随后被重定向回产品页面,并出现错误:
  • PayPal ​按钮现在按预期显示在购物车和迷你购物车页面上。 以前,此按钮不显示在购物车页面上,并且会在迷你购物车页面上重复。

性能

  • 在​ Sales > Orders ​页的批量操作下拉菜单中进行多次点击,不会再生成多个POST请求。 GitHub-37997
  • 当购物者导航到触发301重定向的页面时,仅缓存200404响应,除非该页面的Cache-Control标头包含private 。 以前,缓存Cache-Control标头中带有private的HTTP状态200,并且缓存HTTP状态301,除非其Cache-Control标头中包含privateGitHub-36492
  • 已从Magento\Catalog\Model\ProductRepository中删除未使用的Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper。 以前,ProductRepository加载此帮助程序,它是一个Adminhtml控制器。 GitHub-37864
  • 当许多选项添加到捆绑产品时,提高了页面加载速度的性能。 GitHub-29409
  • 已优化从​ Products in Category ​选项卡将产品分配给类别的流程。 现在,在网格中完全加载产品之前,Add Product by SKU ​选项卡中的​ Assign ​和​ Remove ​按钮处于禁用状态。 以前,管理员用户无法按SKU在包含数百万个已注册产品的目录中添加产品。
  • 使用许多自定义产品属性执行时,addProductToCart突变的性能已得到改进。 以前,当使用许多产品属性(大约1000个)执行此突变时,Commerce会尝试加载所有产品属性。
  • 解决了加载购物车规则使用的产品属性时的性能问题。 现在只加载活动购物车规则的产品属性。
  • 现在,多次运行时bin/magento setup:perf:generate-fixtures setup/performance-toolkit/profiles/ee/small.xml命令可成功执行。 以前,它在运行多次时引发此错误: Coupon with the same code already exists

促销活动

  • 与​ Apply to shipping amount ​规则一起应用时,Fixed amount discount for whole cart ​价格规则的效果现在按预期在产品和装运金额之间按比例分配。 以前,折扣计算不正确。
  • Discard Subsequent Rules ​设置现已按预期应用。 启用此设置后,其他低优先级的规则只能应用于其他产品。 GitHub-35707

reCAPTCHA

  • 不可见的reCAPTCHA v3现在对签出页面​ Sign in ​按钮按预期工作。 以前,购物者无法登录,Commerce会引发JavaScript错误。
  • 现在,结账工作流中的Google reCAPTCHA可按预期用于支票、汇票和自定义支付方法。
  • 在加载Adobe Commerce ReCAPTCHA复选框之前,无法再提交Google表单。
  • reCAPTCHA构件现在位于支付页面上的​ Place Order ​按钮之前。 以前,小组件显示在页面顶部。

报告

  • 现在,当使用非默认货币的商店生成订单时,订单报表(REPORTS > Sales > Orders)包含正确的订单值。 以前,此报表包含不正确的值。 GitHub-36742
  • 为了清楚起见,修订了销售订单报告表中的误导性信息。
  • 管理员用户现在可以从“放弃的购物车报告”页面搜索包含+ (加)符号的电子邮件的记录。 GitHub-36560
  • 现在,从GraphQL管理中禁用New Relic后,Commerce交易名称可正确显示。 GitHub-36112

审核

  • 启用“不可见reCAPTCHA v3”后,购物者无法再快速提交重复的产品评论。

奖励

  • 积分过期后,将不再发送奖励积分过期电子邮件。 已重构magento_reward_balance_warning_notificationmagento_reward_expire_points cron任务,以增加灵活性和电子邮件发送容量。 以前,商家无法在短时间内发送由这些cron任务生成的许多电子邮件。 这可能会导致延迟提交对时间敏感的通知。
  • 过期奖励积分现在会按预期从购物者当前的奖励积分余额中扣除。
  • 奖励积分余额更新电子邮件通知现在会考虑当前商店上下文。 以前,奖励积分余额更新电子邮件使用默认存储区的配置设置。
  • 现在,创建贷项通知单后,奖励积分可以退款。 以前,商家在创建贷项通知单后无法退款奖励积分,并且订单状态仍为Completed,而不是Closed

RMA

  • REST POST /V1/returns请求现在为每个产品创建一个RMA。 以前,此请求可以绕过验证过程,为每个产品返回多个RMA。
  • 当​ Show on Storefront RMA属性设置为​ no ​时,RMA属性现在会自动添加到默认EAV表单中。 以前,在创建自定义返回属性且​ Show on Storefront RMA属性设置为​ no ​时,RMA项目详细信息弹出窗口为空白。
  • 现在,当启用产品编辑页面上的​ Use Config ​复选框时,Enable RMA ​属性的值与配置中指定的值匹配。
  • 现在,单个产品级别的​ Enable RMA ​属性遵循存储RMA设置配置。 以前,无论应用商店配置设置是什么,在添加产品时,此设置都会默认处于关闭状态。

Search search-heading

  • 页眉的小型搜索前端上的自动完成搜索建议现在可以按预期工作。 以前,在启用此功能时,自动完成不会填充此字段。 GitHub-37557
  • 通过添加索引器,改进了从管理员搜索栏进行查询的性能。 以前,search_query表越大,完成查询所需的时间就越长。
  • 现在,按名称的字母顺序对产品排序对包含土耳其字符的名称可以正常使用。
  • 现在,仅当​ Use in Search ​设置设置为​ Yes ​时,才会显示​ Use in Search Results Layered Navigation ​产品属性属性。
  • 现在,在高级搜索中一起应用高级搜索价格和SKU筛选器时,这两个筛选器可以正确工作。 GitHub-37581
  • 不再对空搜索字段执行搜索。 这将缩小search_query表的大小。 以前,不正确的查询或查询空搜索字段会返回巨大的数据集,这会增加search_query表的大小并导致/tmp出现问题。
  • 现在,在对具有下拉自定义属性的目录条目进行排序时,店面过滤器可按预期工作。
  • 搜索结果现在会按预期显示基于属性搜索权重的相关结果。
  • 管理员​ Stores > Attributes > Product ​上Search Weight属性的Storefront Properties输入字段下的信息性文本现在描述了可能的值。 GitHub-36646

配送

  • 现在,在禁用动态价格属性后将捆绑产品添加到购物车时,购物车价格规则可按预期工作。 无论动态属性是启用还是禁用,都会应用免费配送和正确的表费率。 以前,无法按预期应用免运费。
  • 在为订单创建部分发运后,Commerce现在会按预期转移到新的发运页面。 以前,在创建部分发运后,Commerce不会为订单的其余产品创建完整的发运页面。 GitHub-38063
  • 现在,可以正确计算将订单发送到多个地址的总金额。 以前,当报价包含多个送货地址时,收集器总数会更新$quote->getShippingAddress()中给定地址的送货金额,而不是按预期由$shippingAssignment传递。 GitHub-37283
  • 当管理员用户使用登录作为客户功能时,Commerce不再在使用多个运送地址进行签出时引发异常。
  • 现在,当您在创建运输标签后将产品添加到包时,产品会在“创建软件包”页的“产品”网格中正确列出。
  • cart查询现在将离散配送折扣作为具有唯一折扣标签的单独配送折扣返回。 新的applied_to折扣属性支持对购物车项目应用的折扣之间的差异。 以前,所有运费折扣合并为一个硬编码的​ Shipping Discount ​值。
  • 当管理员用户创建重新订购时,当管理员用户单击​ Reorder ​按钮(管理员​ Sales > Orders > View )时,初始订单中的账单地址和送货地址会自动填充相关字段。 如果购物者的通讯簿中保存了相同的地址,则重新排序将始终包含这些地址的更新版本。 以前,送货地址字段预填充了更新的数据,但帐单地址字段则未预填充。
  • 现在,启用​ Apply custom Shipping Policy ​并且自定义配送策略可用时,Shipping Policy ​文本框会在“管理应用商店视图”范围中可见。 GitHub-36425
  • cart查询现在返回与available_shipping_methods运营商和方法代码之一匹配的selected_shipping_method值。 以前,当其中一个选定的配送方式包含下划线时,这些承运人/方式代码不匹配。 GitHub-36606
  • 当街数组中的第二个值为空时,setShippingAddressesOnCart突变不再引发错误。 以前,引发此异常: The address failed to save. Verify the address and try againGitHub-35160

Sitemap

  • 现在,XML Sitemap在多层部署中可按预期工作。 以前,站点地图不包含为每个存储分配的默认页面。 GitHub-35001
  • 在启用了网站id != 1和单商店模式的情况下,商家现在可以创建并保存产品。 以前,保存操作失败,并显示以下消息: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint failsGitHub-35009

暂存

  • 在暂存功能板中,销售规则的暂存更新不再重复。
  • 现在,如果购物者在计划更新过程中将捆绑产品添加到购物车,则会正确更新捆绑产品。 以前,如果在计划任务处理过程中将带选项的捆绑产品添加到购物车,Commerce会引发此异常: Some of the products below do not have all the required options. Please select all required options
  • 计划更新现在可以保持捆绑选项的正确价格。 以前,对于特定网站或商店浏览次数,这些价格会更改为零。
  • 如果未指定结束日期,则更新计划更新不再删除暂存项目的先前版本。 以前,更新暂存项目时,如果未指定结束日期,则会删除项目的回滚版本。 删除之前,Commerce未引发错误或警告管理员用户。
  • 在计划更新购物车价格规则后,商店视图标签值不再被清除。 以前,即使更新中未指定这些标签,也会将其清除。
  • 现在,内容暂存预览对链接的页面可正常使用。 以前,您无法导航到暂存预览中的链接页面,而是被错误地定向到店面页面。
  • 暂с留暂存更新不再导致删除在稍后日期分配的计划更新。
  • 在启用了Google Analytics内容实验的情况下,添加或编辑类别的计划更新时,不再发生JavaScript错误。
  • 商家现在可以在查看或编辑类别现有计划更新后成功保存该更新。 以前,Adobe Commerce在system.log中引发错误。
  • 现在,在应用计划更新且购物车中包含之前添加的产品时,可下载链接会按预期保留。 以前,可下载的链接从客户的“我的帐户(我的可下载产品)”页面和“管理员订单”视图页面中消失。
  • 现在,在应用支持产品的暂存更新后,产品可按预期显示在店面上。 以前,产品在管理员中启用,但在目录清单的索引器模式设置为“按计划更新”时,产品在店面类别中不可见。 完全重新索引修复了问题。
  • 当没有要处理的临时更新时,magento_bulk表中的staging.synchronize_entity_period使用者队列不再增加。 以前,如果将cron配置为每分钟运行一次,则每分钟会向此表添加一条与staging.synchronize_entity_period使用者相关的新记录。
  • 在保存其他产品时,为产品创建计划更改时,Adobe Commerce不再引发SQL错误。 以前,Adobe Commerce显示此错误: The product with the SKU "%1" couldn't be added to the current update

Target规则

  • 现在,Target规则可正确用于不同的存储视图。 以前,由于相关产品规则缓存存在问题,导致在多商店部署中无法显示推荐的产品。

税金

  • 现在,在配置税并启用FPT的情况下,发票会显示正确的小计。
  • 现在,当将​ Price Display Settings ​设置为含税时,为具有​ Special Price ​值的产品选择自定义选项时,Commerce会显示​ Regular Price ​值的正确值。
  • 现在,按照配置设置指定的方式,税已按预期包含在结账工作流配送价格中。
  • cart查询applied_taxes响应值现在按预期包括所有个别税则。 以前,如果配置了多个税则,它会返回总税值。
  • 税务规则创建期间​ Additional Settings ​部分的折叠/展开图标现在可按预期工作。 以前,只有展开图标有效。 GitHub-37922
  • 您现在可以按预期在“税则”编辑页中编辑税率国家(地区)的值。 以前,不会保存从该页面所做的编辑。
  • 现在,在更新配送方式时,购物车估算区域中的税额会按预期刷新。 以前,购物者在结帐期间更改国家/地区后,不会更新税率。
  • 在“商店视图”范围中创建现有可配置产品的新变体时,新创建的简单产品的tax class值现在设置为父产品的值。 以前,此值设置为none。 因此,这些产品在购物车中没有添加任何税款,而且客户缺税。 GitHub-37180

测试

  • 改进了AdminCreateOrderWithVirtualProductFromDefaultSourceWithBackorders测试,以消除过早完成电子邮件字段导致的失败。
  • StorefrontVerifyProductAfterPartialReindexOnSeveralWebsitesTest已重构以提高可靠性。 GitHub-38359
  • 通过引入一个额外步骤来显式设置要在搜索中使用的属性,修复了AdminSimpleProductwithTextandVisualSwatch测试。
  • 更正了SortbyTest单元测试中的拼写错误。 GitHub-37792
  • 删除了对单元测试中不存在的类的引用。 GitHub-37636
  • 改进了AdminCreateOrderWithVirtualProductFromDefaultSourceWithBackorders测试,以消除过早完成电子邮件字段导致的失败。
  • 已重构Magento\GraphQl\Catalog\ProductSearchTest::testFilterProductsBySingleCategoryId测试以处理products查询响应中的随机类别顺序。
  • 已解决TableNameSniff中大型数组的性能问题。
  • 编辑礼品注册表功能的集成测试不再依赖现有的实体ID。 所有必需的数据现在都通过夹具获得。 以前,\Magento\GiftRegistry\Controller\Index\EditPostTest失败。
  • CollectionTest::testGetDateRangeFirstPart()现在计入夏令时。
  • 修复了StorefrontDeleteItemFromRequisitionListPrintView的弃用通知。

UI框架

  • 图像上传程序现在在动态行中按预期工作。 现在,以跨国阵列形式发送图像时,可以正确上传图像。 GitHub-37957
  • 文件上传样式在Luma主题中不再重复。 GitHub-32373
  • 街道字段客户帐户编辑地址表单中的街道字段现已正确保存。 现在,这些字段按表单中给定的键正确排序。 GitHub-37973
  • 更正了礼品注册表​ Message ​文本字段中的光标行为。
  • 产品详细信息页面的累积版面偏移(CLS)值已得到改进。 (此量度量化页面布局的视觉稳定性。)GitHub-35410
  • 改进了模板渲染期间发生的错误消息传递。 Commerce现在会显示一条信息性消息。 以前,当发生PHP错误时,Commerce显示HTML泄漏。
  • 自定义客户属性(类型File attached)现在可以正确处理已删除的图像,然后上传。 以前,上传的自定义属性、删除的自定义属性以及再次上传的自定义属性无法从店面保存。
  • 更正了日历模板文件中的语法错误。 GitHub-37725
  • 现在,在启用单店模式时,管理员用户可以更改店面徽标。 以前,Commerce显示默认的回退徽标。 GitHub-35952
  • Mixins配置值不再为空,jQuery mixin现在不论加载位置如何,均可正常工作。 以前,jQuery mixin在浏览器间加载不一致。
  • 当登录页面上的​ Show Password ​复选框处于活动状态时,密码现在按预期显示。
  • Adobe Commerce现在为具有特殊价格的固定捆绑产品显示正确的价格。
  • 更新了店面页脚模板文件中指向GitHub问题列表页面的链接。 GitHub-37214
  • “最近查看的项目”小组件现在显示按产品价格分组的正确税额。 GitHub-35881
  • 管理员用户现在可以按预期拖放为简单产品创建的可自定义选项。 GitHub-36051
  • 现在,产品下拉列表属性类型的顺序与可配置产品页面上的图像顺序匹配。 GitHub-37285
  • 系统消息现在加载得更快。 只加载正在显示的消息。 以前,从数据库加载所有消息非常耗时。
  • 通过布局XML设置remove=true来删除痕迹导航节点不再导致删除类别页面上的页面标题。 以前,通过这种方式删除痕迹导航会从类别页面中删除页面标题。
  • 现在,当客户注册表单包含多选客户属性时,该表单会按预期加载。 以前,Adobe Commerce引发此异常: [2023-03-05T05:57:40.032602+00:00] report.CRITICAL: Exception: Deprecated Functionality: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /magento2ee/app/code/Magento/CustomAttributeManagement/Block/Form/Renderer/Multiselect.php on line 53 in /lib/internal/Magento/Framework/App/ErrorHandler.php:62GitHub-37189
  • 现在,包含单引号的欢迎消息在店面中正确呈现,并且没有控制台错误。 以前,如果欢迎消息包含单引号,则在店面呈现期间不会加载欢迎消息。 Adobe Commerce还显示控制台错误。
  • 当您尝试在“管理员顺序”页面中的评论历史记录和返回之间快速更改视图时,Adobe Commerce不再引发错误。 以前,Adobe Commerce显示此常规错误: A technical problem with the server created an error
  • 权限仅限一个网站的管理员用户现在可以将特定于网站的产品属性集更新为all stores view范围。
  • 现在,放大镜小组件会按预期在产品页面上加载。
  • 多行可自定义选项现在可以在发票、发运和贷项通知单PDF文档中正确呈现。 以前,多行文本前面会出现意外的分页符,如果文本超出页面,则文本会被截断。
  • 现在,在为商店ID与网站ID不匹配的其他网站创建客户时,管理员用户可以从管理员中添加新的客户地址。 以前,Adobe Commerce显示此弹出消息: Something went wrongGitHub-36582
  • 当“分配公司管理员”电子邮件中包含CMS Block URL变量时,公司管理员详细信息现在会按预期保存,并且管理员会被正确重定向。
  • 与在订单详情页面上提交评论相关的错误消息,现在可提供更多信息。 以前,当购物者单击​ Submit comment ​而未更改订单状态或在评论区中输入文本时,Adobe Commerce显示此消息:The comment is missing. Enter and try again
  • 为一个字段选择日期后,日历图标现在按预期显示在管理员​ Marketing > Cart Price Rules ​的日期范围字段中。 以前,为一个字段选择日期后,日历图标不再显示在其他字段中,并且Adobe Commerce会显示占位符文本。 GitHub-36499
  • 现在已成功加载包含多选字段的客户注册表单。 以前,此表单包含多选字段时未加载,并触发了以下错误: report.CRITICAL: Exception: Deprecated Functionality: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /magento2ee/app/code/Magento/CustomAttributeManagement/Block/Form/Renderer/Multiselect.php on line 53 in /lib/internal/Magento/Framework/App/ErrorHandler.php:62GitHub-37189
  • 现在,在产品库全屏模式下单击视频缩略图可按预期显示视频。 以前,不显示视频,并且浏览器控制台显示JavaScript错误。 GitHub-36456
  • 在版权行中添加了一个变量,该变量每年自动更新。 GitHub-36776
  • 现在,产品页面上的图像滑块在移动设备视图中可按预期工作。 以前,仅成功显示第一个图像。 GitHub-37232

URL重写

  • HEAD元素的crossorigin属性已添加到linkTypesGitHub-32509
  • 现在,可基于多存储部署中的存储级别可见性配置生成URL重写。 以前,当产品可见性设置为默认存储范围下的​ 不可见 ​时,不会为非默认存储生成URL重写。
  • Category::getUrl()不再获取301重定向。 GitHub-38152
  • 在为自定义存储生成缺失的URL重写时,Commerce不再为根类别和多存储设置中设置为​ Not Visible Individually ​的产品生成产品URL重写。
  • 规范URL标记现在反映类别URL键属性更新后发生的预期更改。 以前,使用过时的类别URL,这会立即触发对新URL的重定向。
  • 将产品添加到类别后,现在可按预期生成所有商店视图的类别产品URL重写。 GitHub-32910
  • 启用​ 生成类别/产品URL重写 ​后,当您尝试为产品URL创建301/302重定向时,Commerce不再引发错误。 创建产品并将其分配给类别后,将创建自动URL重写:一个针对直接URL,一个针对通过类别路径的产品。 创建新产品URL重写时,将检查产品、类别和商店之间的关联。 现在,此检查基于关联的实体属性(类别和产品)。 以前,此检查是在预先存在的URL重写时执行的。
  • 现在,当从CSV文件导入新类别时,将为所有存储视图生成类别URL重写。
  • 产品URL后缀和类别URL后缀配置现在与url_rewrite表中的后缀匹配。 以前,更新URL后缀配置时出现争用情况,并且配置的URL后缀与url_rewrite表不匹配。
  • 现在,在创建类别URL重写时,Adobe Commerce会在所有级别呈现类别树。 以前,仅显示前三个级别的类别。 GitHub-36973
  • 现在,新创建的具有一个子节点的CMS页面已包含在营销过滤器网格(Marketing > URL rewrites)中。 以前,不会为这些CMS页面创建URL重写。
  • 在导入新类别期间,CSV文件中现在存在类别URL重写。
  • 现在,无URL重写的多存储CMS页面按预期转发。 以前,请求的多存储CMS页面若没有URL重写,则会被重定向到存储主页,但原始CMS页面不会被定向。

Visual Merchandiser

  • 您现在可以将Categories属性用于可视化促销规则。 以前,Adobe Commerce引发此异常: Something went wrong while saving the category

Web API框架

  • 当​ Callback URL ​和​ Identity link URL ​字段为空时,Commerce在管理员​ System > Extensions > Integrations ​中不再显示Integration not secure警告。 GitHub-36407
  • 已将taxesitemized_taxesadditional_itemized_taxes扩展属性添加到 Magento\Sales\Api\Data\OrderInterface。 这些属性允许您通过Order REST调用保存已应用的税。
  • 层价格REST API现在支持小数数量。 以前,即使启用了​ Use Decimal Quantity ​设置,此API也不允许小数数量。
  • 尝试向挂起的订单状态添加评论时,REST V1/orders/{id}/comments端点不再更改订单状态。 它现在会给出信息性错误。 以前,此端点会在添加评论时更改订单状态。
  • REST API GETPOST V1/products/attributes终结点不再为​ Use in Layered Navigation ​选项的Filterable(with results)Filterable(no results)选项的is_filterable属性返回相同的值。 以前,此端点返回相同的值,因为is_filterable属性属性是Boolean类型,不允许将此属性设置为Filterable(no results)GitHub-37979
  • 缺少的media_gallery_entries字段已添加到REST V1/configurable-products/sku/children终结点。 以前,此函数缺少存储和显示media_gallery_entries所需的代码。 GitHub-37607
  • REST V1/carts/mine/estimate-shipping-methods方法现在将验证所有级别的有效负载字段数据,并为无效数据返回400 HTTP代码。 以前,仅验证第一级API有效负载,如果在有效负载的非验证级别中返回了无效数据,则Commerce会返回500状态代码。
  • 现在,用于更新具有层价格和不同属性集的产品的异步批量REST API操作已成功完成。 以前,无法以这种方式更新具有不同属性集的产品,Commerce显示此错误: The product was unable to be saved. Please try again
  • 现在,当在层价格创建过程中使用无效的客户组名称时,POST /V1/products/tier-prices端点会返回一条信息更丰富的错误消息。 以前,Adobe Commerce返回类似以下内容的错误: Notice: Undefined index: XXXXX in ~/public_html/vendor/magento/module-catalog/Model/Product/Price/Validation/TierPriceValidator.php on line 474"GitHub-36431
  • 您现在可以执行授权的异步批量API请求,以创建具有非默认组ID的客户。 以前,这些请求会将组ID重置为默认值。
  • 现在,使用批量API创建的客户将收到在其分配的网站中配置的语言版本的客户注册电子邮件。 以前,所有电子邮件都会发送到默认区域设置,而不是客户所分配到网站的区域设置。
  • 禁用​ Allow Guest Checkout ​后,POST V1/guest-carts调用不再提交来宾订单。
  • AsyncOrder未启用时,您现在可以从管理员打开状态为Received的订单。 以前,当订单状态由POST V1/orders更改时,无法从管理员打开订单详细信息页面。
  • Adobe Commerce现在在GET V1/products/sku/media产品媒体API响应中成功返回content属性(base64图像代码)。 content特性以前未出现在响应中。

愿望清单

  • 当购物者多次尝试将同一项目添加到愿望清单时,Commerce现在会显示一条消息,指示该项目已添加到愿望清单。 以前,在这些条件下,Commerce会增加愿望清单中的产品数量。
  • Adobe Commerce现在已成功将具有所需上传的可自定义选项文件的产品添加到愿望清单。 以前,Commerce向愿望清单中添加了两个产品,而不是一个。 GitHub-37437

系统要求

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

安装和升级说明

您可以使用编辑器安装Adobe Commerce 2.4.7。

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