Magento Open Source2.4.5发行说明
Magento Open Source介绍了对平台质量、支付方法、GraphQL缓存性能和可访问性的改进。 其中包括对集成的Google模块的更新。
此版本包括290多项质量修复和增强功能。
其他发行信息
虽然这些功能的代码与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现在支持
-
编辑器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-session
、laminas/laminas-text
和laminas/laminas-view
依赖项。
其他升级和更换
-
DHL集成架构已从v6.0更新到v6.2。
-
USPS装运的默认网关URL已更新为使用
https
而不是http
。 -
已将
Froogaloop
库替换为VimeoPlayer.js
库(2.16.4)。 -
grunt-eslint
(NPM)库已升级到最新版本。 -
jQuery Storage
库已替换为julien-maurel/js-storage
。 -
php-cs-fixer
和phpcs
静态代码分析工具现在与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.js
和jaralax-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。 默认情况下,应用程序Open Source会创建这些Cookie并依赖它们进行授权,这会影响性能。 将来,我们建议使用令牌作为授权GraphQL请求的唯一形式。 我们不建议单独使用会话Cookie或将其与授权令牌结合使用。 查看GraphQL授权。 -
现在,只有在需要时才会使用类代理在GraphQL操作中启动会话Cookie。
-
会话使用情况已从GraphQL中的
http
标头处理器中删除,例如商店、客户或货币。
有关这些增强功能的详细信息,请参阅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 选项已添加到管理员中。
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
后,Admin中不再显示已禁用的全页缓存。
- 刷新缓存时,New Relic部署标记现在可按预期工作。 GitHub-32649
购物车和结账
- 签出工作流的帐单步骤上的地址搜索弹出窗口不再导致DOM错误。
addProductsToCart
突变现在可以正确用于多个产品。 以前,此查询返回第一个具有准确小计的产品,但返回其他产品的小计0。
- 现在可处理由SKU添加的受限产品的权限异常。 购物者现在可以在店面看到相应的消息,并且错误表中的数量字段已禁用。 以前,applicationOpen Source引发如下异常:
There has been an error processing your request
。
- 已优化在禁用购物车价格规则后更新受影响报价的SQL查询,以避免锁定整个报价表。
- 禁用访客结帐后,具有全局帐户共享的购物者不再需要在多站点部署中登录到辅助网站。 现在,当购物者导航到子域时,将加载客户数据。 购物车将不再被要求再次登录,并且会显示之前的购物车内容。
- 当在多地址结帐中删除单个数量地址项时,结帐工作流中的地址下拉列表值不再更改报价中的其余项。 以前,当在多地址签出过程中从报价中删除某个产品时,所有产品的地址下拉列表值都将更改为默认值。
- 当产品缺货时,
cart
查询不再返回null响应。 已将包含错误消息的新errors
元素引入响应。 以前,当您使用缺货产品运行查询时,应用程序Open Source在响应中的items
部分下显示null
值。 查看购物车查询。
- 当访客购物者在将产品添加到购物车后创建帐户,然后再继续结帐时,配送方式现在可按预期使用。 以前,当访客在创建帐户之前将产品添加到购物车时,在结帐期间没有可用的配送方式。 将其他产品添加到购物车后,即可使用配送方式。
- 未在 允许国家/地区 字段中选择任何选项时,购物者现在可以将产品添加到其购物车。
- 当 启用持久性 设置为 是 时,会话超时后,购物车内容和登录状态现在会按预期重新加载。 GitHub-35182
- 现在,当购物者针对具有多个配送地址的订单从配送页面导航到结账工作流中的购物车页面时,可以正确更新迷你购物车小计。 以前,小计是两倍。
- 现在,启用 启用持久性 后,迷你购物车会在会话超时后显示以前添加的产品。 GitHub-35183
- 商家现在可以创建贷项通知单,其中 退款发运(包括 税) 设置为–0.01,现在可以将此金额设置为0。 以前,不能在这些条件下创建贷项通知单。
购物车价格规则
Parent Only
属性范围现在已在购物车规则条件中正确使用。
目录
- 当通过
PUT /V1/products/
更新商店视图的产品名称时,产品URL密钥现在保持不变。 以前,新的URL密钥是根据新的产品名称生成的,并分配给产品,它覆盖了该商店视图中的URL密钥。
- 将产品从Page Builder产品小组件设置为轮播模式添加到类别时,不再触发页面重新加载。
- 设置为 无法单独显示 的产品不再出现在目录高级搜索结果中。
- 现在,可在“批量属性更新”页面上正确更新动态包属性。 以前,动态SKU 属性仍设置为 是,即使它们在批量更新页面上被禁用也是如此。
- 现在,可以使用增量索引器而不是完全重新索引来正确应用目录规则。
- 现在,您可以在多页产品列表的列表视图和网格视图之间成功切换。 以前,当您在切换到网格视图之前导航到多页产品列表视图的最后一页时,应用程序Open Source显示以下错误:
Unfortunately there are no products in this category on our website currently
。
- 管理员操作日志报告现在会按预期显示更新的产品ID和更新的状态信息。
- 完全重新索引后,触发器现在按预期恢复到
catalogrule_product_price
表。 以前,在catalogrule_rule
或catalogrule_product
完全重新索引后,已从catalogrule_product_price
表中删除触发器。
- 用于将产品分配给类别的类别规则不再随机更改。
- 具有范围受限访问权限的管理员无法再全局更新类别。 以前,当多个网站使用同一类别但产品不同时,并且权限仅限于一个商店的管理员更改了该类别中的产品时,其他商店的产品选择也会更改。
- 现在,当使用指定区域设置的非默认货币时,产品详细信息页面会显示正确的价格。 以前,店面上的数字本地化达不到预期。
- 现在,在尝试检索具有重复记录的产品的层级价格时,API和店面会显示相同的错误消息。 以前,
PUT /V1/products/tier-prices
返回不正确的错误消息。
- 现在,当您尝试添加带有尾随连字符的产品URL密钥时,Magento Open Source会提供验证错误消息。 还提供信息性工具提示文本。
- 新的
ConfigurableWishlistItem.configured_variant
字段已替换ConfigurableWishlistItem.child_sku
字段。 当客户希望列表包含未配置的可配置产品时,后一个字段触发了内部错误。
- 现在,在批量属性更新期间只为选定的存储生成URL重写,以更改产品可见性。 以前,批量属性更新会为错误的存储创建URL重写。
- 启用
Synchronize widget products with backend storage
设置后,应用程序Open Source将最近查看的产品数据添加到catalog_product_frontend_action
数据库表中。 在添加记录时,它包括客户或访客ID。 如果客户ID和访客ID为空,则响应中的recently_viewed_product
部分现在为空。 因此,在发送customer/section/load
Ajax请求时,应用程序Open Source可以根据客户或访客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
和UIform_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
查询现在检索可配置产品的价格,这些价格准确地反映了 显示缺货 配置设置。 以前,查询不会返回准确的价格。
- 可配置选项现在链接到使用
POST /V1/configurable-products/configurable1/child
在Admin中创建的可配置产品。
- 现在,多选属性可在产品编辑期间正确保存。 以前,applicationOpen Source在保存产品时保存了非选定属性的默认选项以及选定属性。
- 现在,在通过修补程序脚本创建全局
select
属性期间,Magento Open Source会按预期显示可配置属性。 以前,符合条件的全局属性会被隐藏。
-
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
命令不再覆盖app/etc/env.php
中已设置的缓存ID前缀。
bin/magento setup:static-content:deploy -s compact
命令现在按预期包括子主题中的样式。 以前,主题CSS文件在部署后不在店面上。
- 已添加新sniff以检查
void
元素中是否使用了闭合斜杠。
- 为产品分配新源并更改其数量后,Magento Open Source不再引发SQL错误。 GitHub-35262
- 属性排序顺序现在按更新后
di.xml
文件中指定的顺序运行。
updateCartCurrency
函数现在设置了字符串,而不是购物车对象内的对象。 以前,applicationOpen Source不使用getQuote
加载引号,因为updateCartCurrency
函数在购物车对象中设置了一个对象而不是字符串。 GitHub-34199
- 由于
\DateTimeFormatter::formatObject()
,单元测试中不再出现弃用通知。 此方法现在可按预期使用$format
的数值。
- Magento Open Source在管理员上不再显示
preg_replace()
错误。 第三个参数($subject
)现在的类型为array|string
,而不是bool
。
isFreeShipping
方法现在返回整数而不是布尔值。GitHub-35164
- 在为类
vendor/magento/module-backend/Model/Menu.php
的任何方法创建插件时,Magento Open Source不再引发以下错误:Error: Call to undefined method ReflectionUnionType::getName()
。 GitHub-35292
- 现在,当您导航到店面上的
/checkout/sidebar/updateItemQty/?item_qty=error
时,Magento Open Source返回404错误,而不是500错误。 以前,引发此错误:Warning: A non-numeric value encountered in /vendor/magento/module-checkout/Controller/Sidebar/UpdateItemQty.php on line 69
。 GitHub-34380
- 在配置了AMPQ连接但未配置SSL时,Magento Open Source不再触发
trim(): Passing null to parameter #1 ($string) of type string is deprecated
错误。
- 已将
longblog
数据库定义更正为long blob
。 GitHub-35108
- 包含单引号的挖空文本现在可翻译。 GitHub-34319
magento2/app/code/Magento/Security/Model/AdminSessionsManager.php
中的TypeError
已从int
更正为string
。 GitHub-34415
.htpasswd
已添加到nginx
配置文件中禁止的位置。 GitHub-35150
- 通过将
Magento_Ui/js/core/app
作为deps
添加到app/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
查询现在返回的产品信息可准确反映“显示相关产品”配置。 GraphQL ProductInterface中的related_products
、upsell_products
和crosssell_products
字段现在分别根据“显示相关产品”、“显示追加销售产品”和“显示交叉销售产品”配置进行了解析。
- 现在,通过批量产品批量更新将 Set Product设置为New 属性时,Set Product as New From Date 属性显示正确的日期。 以前,将产品设置为新的起始日期 显示为 1970年1月1日。
- 不再自动授予具有受限角色的用户访问新模块的权限。
- 相关产品规则条件现在可以按预期处理包含
multiselect
属性的产品。
- 商家现在可以向产品比较添加层价格属性(
tier_price
)。 以前,当为此属性启用 店面上的可比较内容 设置时,产品比较页面崩溃。 GitHub-35244
- 现在,当您设置无效的Cookie域(存储 > 配置 > Web > 默认Cookie设置Cookie域)时,Magento Open Source会显示错误消息。 以前,网站崩溃。 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
。
- 在单击 共享愿望清单 之前,当您激活 在此处选中以将RSS馈送链接到愿望清单 复选框时,Magento Open Source不再引发错误。 GitHub-34998
- 显示密码 复选框(“客户登录”、“客户注册”、“客户编辑”(“更改密码”部分)和“客户设置新密码”表单)的标题现在可翻译。 GitHub-34857
- 更新了
app/code/Magento/NewRelicReporting/etc/adminhtml/system.xml
中的标签和评论描述。 GitHub-31947
- 已删除不需要的
csp_whitelist.xml
文件。 GitHub-30607
GraphQL
- GraphQL
BundleItemOption
类型中添加了缺少的price_range
属性。 GitHub-35010
- 禁用 在搜索结果中使用 分层导航设置时,
products
查询不再返回作为聚合的属性。 GitHub-33318
price_including_tax
字段已添加到CartItemPrices
。 GitHub-29057
ProductInterface
中的new_from_data
和new_to_datefields
不再被弃用。 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
查询现在仅返回免费订单的一种付款方式。 以前,查询响应中会返回所有活动的支付方法。 GitHub-34036
products
查询不再返回受禁用的变体影响的可配置产品的price_range
值。 GitHub-33629
- 在
collectQuoteTotals
调用之前添加了一个插件,以确保不会多次应用商店积分。
generateCustomerTokenAsAdmin
突变现在会按预期检索客户令牌。 以前,不会返回令牌,而是返回此错误:Customer email provided does not exist
。
- 现在,定义自定义
type
产品属性后,GraphQL架构有效。 以前,架构无效,因为产品类型的type
属性被自定义type
属性覆盖。 GitHub-34929
- 添加或更新了
createCustomer
、createCustomerV2
、updateCustomer
或updateCustomerV2
突变的客户现在添加了活动的新闻稿订阅。 以前,即使请求包含正确的输入参数,客户也会取消订阅新闻稿。 GitHub-33599
- 针对特定商店视图的
products
查询现在仅返回多站点部署中特定网站的根类别中的类别。 以前,查询返回其他网站的根类别中的类别。 GitHub-34570
products
查询现在仅返回提供的类别ID的子类别。 以前,它会返回所有类别。 GitHub-35220
- 当响应中指定了
gift_message
对象,但礼品消息不存在时,customerOrders
查询现在按预期进行响应。 以前,查询返回此消息: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-35204,GitHub-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
上的观察者现在支持从订单对象中检索数据。sales_order_state_change_before
event
参数已更新。 GitHub-26789
indexer:reset
已重构为调用$indexer->invalidate()
。 GitHub-34988
- 现在,您可以在
htmlClass
属性值中使用冒号符号,这支持使用其他组件,例如Tailwind UI。 GitHub-34430
记录
- 现在,客户、客户地址和订单操作在管理员操作报表中正确记录。 以前,如果配置设置中未指定
postDispatch
处理程序,则applicationOpen Source不会记录操作。
MFTF
操作组
在以下测试中,重复性操作已替换为操作组:
AdminConfigurableProductChildrenOutOfStockTest
GitHub-32378AdminCreateStoreViewTest
GitHub-34631
新测试
AdminUnlockAdminUserEntityTest
GitHub-34836
StorefrontNewsletterSubscriptionWithEnabledNeedToConfirmConfigTest
GitHub-33344
重构的测试
AdminCancelTheCreatedOrderWithCashOnDeliveryPaymentMethodTest
GitHub-33692
新闻稿
- 在“管理员”>“营销”>“新闻稿订阅者”中,已登录的客户不再标记为来宾。
- 现在,如果将客户分配给非默认存储区,并且订阅或取消订阅了管理员,则新闻稿订阅确认电子邮件在 发件人 字段中提供了正确的存储区特定电子邮件地址。 以前,客户收到一封电子邮件,默认电子邮件位于 From 标头中。 GitHub-34963
- 新闻稿电子邮件模板中的取消订阅URL现在可按预期工作。 GitHub-33310
订购
- 现在,在编辑订单后,访客客户详细信息保存成功。 以前,某些客户详细信息丢失,包括
customer_firstname
和customer_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)。 以前,当订单的装运量为零时,应用产品打开Source不会在发票页装运总数中显示装运总金额。
sales_order
表中的increment_id
列已增加。 以前,假定sales_order.increment_id
的长度为50个字符的第三方模块只保存了increment_id
的前32个字符。 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 Match
、Prefix Match
和Full Match
。
- 目录搜索全文索引器已重新定位到存储循环之外,这简化了重新索引过程。 GitHub-33984
- 修复了循环中
array_merge
的问题。 GitHub-33929
定价
- 现在,在默认范围中没有值(但在存储视图级别定义)的价格属性可以正确编制索引。 以前,从EAV表中检索价格属性值的SQL表达式不考虑默认范围中未定义该值的情况。
- 现在,产品详细信息页面上列出的价格与层价格在结账工作流中列出的价格相同,层价格因所选数量而异(例如,某个产品的定价因购买2件产品而非5件产品而有所不同)。 以前,结帐价格反映的是最低产品数量的价格。
ReCAPTCHA
- 在ReCaptcha完全加载之前,“登录”和“创建帐户”页面上的 Submit 按钮现在处于非活动状态。
角色
- 当“Magento Open Source资源”选项卡上的资源访问设置为 自定义 时,存储 > 配置 > 服务 页面现在会按预期显示Role Web API信息。 GitHub-35506
Search search-heading
- 在分层导航中按色板过滤产品会在修复后显示产品的正确图像。
- 将
int
配置为可搜索的后端type
属性时,Elasticsearch查询现在可按预期工作。 以前,applicationOpen Source引发了Elasticsearch\Common\Exceptions\BadRequest400Exception
异常。
- 现在,您可以在Elasticsearch查询中将搜索同义词与 要匹配的最少搜索项 参数一起使用。 以前,如果在设置中指定此参数,并且为特定关键字添加了搜索词,则搜索不会返回任何结果。
- 现在,在启用了“Magento Open Source建议”和 显示每个建议的结果计数 设置的部署中,搜索会在店面显示准确的搜索结果建议计数。 以前,关键字旁边显示的计数为零。
- 现在,在“目录”页面上按自定义属性排序的产品会按预期顺序显示。 以前,产品按其属性选项值ID排序,该ID反映产品添加到属性的顺序。 GitHub-33810
- 在分层导航中按色板过滤产品现在会显示正确的产品图像。 以前,分层导航
PageCache
键不包含可配置产品的筛选器参数。
- 修复了
catalogsearch/advanced/result
上的PHP错误,并且catalogsearch/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现在会按预期更新产品页面上简单产品的排除税层价格。
- 商店配置页面中添加了验证,以验证从下拉列表中选择的国家/地区是否位于欧盟国家/地区列表中。 “验证增值税号码”按钮现在仅对EU国家/地区可见。 以前,该按钮对所有国家/地区均可见,包括英国。
- 当 目录 中的“显示产品价格”设置为 不含税 或 含税和不含税 时,现在可正确计算层价格。 以前,产品详细信息页面显示包含税费的层价格,尽管进行了设置。
- 现在,使用葡萄牙语言环境对店面中任何有效地址的订单正确应用了税。 GitHub-34271
- 返回
subtotal_with_discount_excluding_tax
时,cart
查询不再包含税。 GitHub-33905
- 订单数据(
GET /V1/orders/
)的Web API请求不再返回行总计的负值。
测试
- 在使用AWSElasticsearch配置运行时更正了
Magento.GraphQl.CatalogGraphQl.ProductSearchTest.testSearchSuggestions
错误。
-
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
翻译和区域设置
- 您现在可以使用翻译内联工具多次编辑同一元素。 以前,只包括使用此工具进行的第一次更改。
- 编辑管理员文本或标签时,商店视图选择器不再阻止翻译窗格。 您现在可以从翻译窗格中编辑这些功能,单击 提交 后,界面会显示这些更改。
- 巴西葡萄牙语和法语语言环境的管理日期时间格式现在有效。
- 为名称验证器添加了重音符号[']字符,以便可以为包含此重音符号的名字或姓氏创建客户帐户。
- “产品详细信息”页面上 添加到购物车 按钮上的文本现在仍保持为相关区域设置中指定的语言。 在
translate_strategy=embedded
时,翻译文件现在会根据区域、主题和区域设置转换为相应的JavaScript文件。 以前,将产品添加到购物车后文本会还原为英语。
- 搜索同义词现在遵循其分配的存储范围。 以前,分配给特定存储的同义词可在任何其他存储上搜索。
- 菲律宾(菲律宾)区域设置问题已得到解决。 GitHub-33996
UI
- 目录 > 产品 网格中过长的产品名称现在使用字形括起来,而不是显示在一行中。
- 最小和最大出生日期范围现在保存为正确的时间戳,然后从有效的时间戳转换为有效的日期格式。
magento.com
的不可用性不再导致管理员登录期间出现性能问题。 添加了对获取版本通知的请求超时。
- 现在,在Chrome浏览器中显示管理员订单、客户和产品网格过滤器的结果时,这些结果会按预期保留。
- 启用
Magento_LoginAsCustomerAdminUi
且 登录目标商店视图 设置为手动选择时,您现在可以从管理员创建客户。 以前,applicationOpen Source引发此错误:(Magento\Framework\Exception\LocalizedException): Unable to get Customer ID
。 GitHub-33096
- 现在,当购物者到达产品图像库中的最后一个缩略图图像时,“下一步”箭头会按预期禁用。
- Search by keyword 输入字段现在在 Catalog > Product 页面上具有
aria-label
元素而不是占位符。
- 管理员页脚中的“隐私政策”链接现在链接到新的Adobe隐私政策。
- 现在,当在生产模式下启用JavaScript捆绑包时,管理员可以访问管理员菜单选项。 GitHub-35325
- 管理员现在可以将当前用户的过期日期设置为大于2038并成功保存用户。 以前,过期日期已更改的用户在注销后无法重新登录。
- 当管理员尝试在管理员 商店 > 属性 > 客户地址 中保存街道行过多的地址时,Magento Open Source现在会显示信息性错误消息。 管理员现在可以删除额外的地址信息并成功保存该地址。 以前,applicationOpen Source会提交额外的行,但不会保存数据。
- 数据库和本地存储中的产品列表视图配置已更新。 现在,在页面重新加载和视图更改期间,将保存自定义网格视图。
- 启用网站限制后,您现在可以在商店视图之间切换。 以前,存储视图切换器的问题会阻止切换存储视图。
- Favicon图标上传表单现在支持
.ico
文件类型。 以前,当您尝试在Admin中上载具有此扩展类型的favicon文件时,应用程序Open Source显示以下错误: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
表和Admin中删除,因为特定商店视图的属性代码可见性状态已更改为 不可单独显示。 以前,在url_rewrite
表中删除了产品的所有URL。 GitHub-34937
视频
- 您现在可以使用页面生成器使用YouTube URL参数来添加新视频。 以前,这些参数会自动从URL中删除。
- 当CSP设置为
restrict mode
时,您现在可以将Vimeo视频设置为在banner
元素的后台运行。 以前,applicationOpen Source引发JavaScript错误。
Web API框架
- 已对订单实施互斥,以防止在并发请求更新期间出现争用情况。 以前,在并发REST API调用期间出现的争用情况会导致“已订购的管理项目”表中的发运状态信息发生覆盖。
- 现在,除非通过REST API更新特定商店视图中的产品时在有效负荷中明确定义,否则将保留产品图像角色继承。
- Swagger架构(
/rest/schema
)现在使用唯一的操作ID。
- 现在,通过
POST /V1/salesRules/
端点创建的购物车价格规则在将状态从disabled更改为enabled后保留现有优惠券代码值。 GitHub-35298
- 通过
POST /V1/salesRules/
端点创建的购物车价格规则现在包含有效的from_date
和to_date
值。 GitHub-35265
CartItemInterface
现在包括customizable_options
。 GitHub-31180
- 启用
Magento_ReCaptchaWebapiRest
模块后,REST API批量PUT和DELETE请求现在可按预期工作。 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
愿望清单
- 现在,从愿望清单页面更新项目数量会按预期更新产品详细信息页面上的数量。 应用程序Open Source现在从产品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。