作者:成都长风云Drupal开发团队
原文地址:https://www.drupal.org/project/drupal/releases/11.1.0
一、发布说明
Drupal 11.1.0是Drupal 11的一个功能版本,可以在生产站点上使用。了解更多关于Drupal 11: https://www.changfengyun.cn/drupal11
此次要版本提供了改进和新功能。它不会破坏公共API的向后兼容性(BC)。内部API和实验模块可能会发生变化。如果是这样,贡献和自定义模块和主题可能需要更新。这是根据Drupal核心的向后兼容性和实验模块策略。
此版本可能包括字符串更改和添加。翻译人员可以在localize.drupal.org上查看最新的翻译状态。
Drupal 11.1.x将在2025年12月之前获得安全支持。Drupal 11.0.x将继续获得安全支持,直到2025年6月。
二、重要更新信息
1、11.1.0标签已被移除
由于打包的原因,11.1.0 tag已被移除并重新创建。这不会对您使用网站造成任何影响。
2、对网站所有者管理的文件的更改
在默认的.htaccess文件中添加了一个指令,该指令在启用MIME Apache模块时为webp图像附加正确的image/webp标头。对于运行在不支持webp-image MIME类型的操作系统上的Apache web服务器上托管的网站,这是必要的。这些网站应该更新其.htaccess文件以利用这一改进。
PHP 8.4或Symfony 7.2不再支持sid_length和sid_bits_per_character配置选项,因此它们已从default.services.yml中删除。网站应从所有的services.yml文件中删除这些设置。
创建块不再需要“访问内容块概述页面”权限。这意味着,对给定块类型具有“创建新内容块”权限的角色将能够创建这些块,而在以前的版本中则无法创建。网站所有者应审核其阻止内容权限,以确保在所有情况下都有意授予阻止创建访问权限,现在还可以考虑撤销不需要的角色对内容阻止概述列表的访问权限。
三、API和behavior更改
大多数过程钩子现在都是在类中实现的。我们建议正在更改核心钩子实现的站点审查这些实现,并根据需要进行更新。有关更多详细信息,请查看以下两条变更记录:
挂钩现在可以在类中实现(关于新API的信息)
(关于核心实现转换的信息)
资产现在按依赖关系排序,而不是依赖于库附加到页面的顺序。这是一个bug修复,解决了资产处理的各种问题。但是,在某些情况下可能会有副作用(例如,如果库指定了与其依赖项冲突的单个资产权重)。模块或主题作者应审查其项目中指定自定义权重的库依赖关系,并评估任何依赖关系,以确定它们是否受到此更改的影响。
帐户设置的默认值“谁可以注册帐户?”已从“访问者,但需要管理员批准”更改为“仅限管理员”。此更改仅适用于使用“标准”或“最小”安装配置文件构建的新站点。
使用Composer是安全、正确地向Drupal安装添加新代码的唯一方法。因此,以下页面(支持通过文件上传安装模块和主题)已被删除,无需更换:
“添加新模块”页面位于/admin/modules/install
“添加新主题”页面位于/admin/theme/install
“添加新模块或主题”页面位于/admin/reports/updates/install
页面缓存和动态页面缓存响应标头已得到改进,以包含有关缓存能力的更多详细信息。
添加了一个新的工作区UI模块,该模块提供了工作区模块的路线和工具栏集成。这是为了允许在core或contrib中实现替代用户界面。
已使用工作区的站点将在更新中自动启用workspaces_ui。
四、自动化测试更改
Drupal核心自动化测试和测试API需要严格的类型。测试必须在打开php标签后添加以下行:
declare(strict_types=1);
五、实验模块更改
包管理器已被添加为一个隐藏的实验模块。这是为了允许对自动更新和项目浏览器进行测试,并最终将其添加到Drupal核心的未来版本中。
六、PHP依赖关系更改
Symfony已更新到7.2.0。
Twig已更新到3.14.2。
七、PHP开发依赖关系更改
Composer已更新到2.8.1。
OpenTetry已更新到1.1.0。这增加了额外的开发依赖项,包括tbachert/spi Composer插件。当Composer安装此软件包时,可能会询问您是否信任此插件。除非您使用的是OpenTetry性能测试,否则在Drupal中,您可以安全地回答“否”这个问题。
前端(CSS和JavaScript)生产依赖关系更改
CKEditor已更新到44.0.0。
jQuery UI已经更新到1.14.0。
八、PHP支持
Drupal11.1支持php8.4
九、HOOKS(钩子)可以写成类
Drupal独特的钩子系统允许修改表单、数据更新、站点流程、渲染结构,甚至其他钩子的顺序。经过许多贡献者的长期努力,现在还可以使用更符合现代PHP代码设计实践的面向对象技术来定义钩子和钩子实现。这也将使熟悉其他项目的PHP开发人员更容易理解Drupal的代码。所有运行时核心钩子都已转换为面向对象的实现。
有了这个新功能,将不再需要以下魔术全局函数:
function hook_entity_insert(EntityInterface $entity) {
// DO STUFF
}
相反,开发人员可以在方法上使用新的Hook属性:
class ExampleHooks {
#[Hook('entity_insert')]
public function entityInsert(EntityInterface $entity): void {
// DO STUFF
}
}
工作区用户界面分离成自己的模块 作为使用工作区进行内容审核的更大计划的一部分,工作区模块的用户界面被移动到单独的工作区UI模块中。对于新网站,如果要使用用户界面启用工作区,现在需要安装此模块。