Drupal 11.1.0 现已推出
Drupal技术

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
  }
}

新的图标管理API

添加了专用 API,允许模块和主题定义图标包。每个包内都有一系列图标,每个图标都有一个系统可以使用的唯一标识符。模块和主题可以改变图标包。

改进安装后的初始体验

重新审视了 Drupal 核心的默认配置,以更好地反映大多数用户的需求。在此版本中:

  • 日期格式变得更易于阅读
  • 用户注册过程现在也默认使用管理员创建的帐户,以避免新网站在审核队列中被垃圾邮件帐户淹没
  • 创建新节点类型时,Drupal 核心将不再自动添加主体字段,允许网站构建者选择自己的内容模型,而不必先删除他们不想要的默认值,并减少基于 Drupal 核心构建的平台的潜在冲突,例如Drupal CMS 和即将推出的体验生成器

表单的渲染缓存

使用表单 API 构建的表单现在可以选择渲染缓存,从而提高各种情况下的页面加载性能。将逐渐选择将表单纳入 Drupal 核心以进行渲染缓存,并且可能会在未来的主要版本中默认选择所有表单进行渲染缓存。

改进了 JavaScript 和 CSS 的浏览器和 CDN 缓存

Drupal 的资产聚合算法已得到改进,以减少 CSS 和 JavaScript 聚合的变化。过去可能产生不同但相似聚合的页面之间的差异(例如,因为以不同的顺序请求库)现在将产生一个文件。

这提高了 CDN 缓存命中率,并减少了访问者在访问网站上的多个页面时下载的 JavaScript 和 CSS 的数量。这建立在自 Drupal 10.1 以来对 Drupal 核心资产聚合的多项近期改进的基础上,并且还消除了计划在未来次要版本中进行的进一步改进。

支持 PHP 8.4

PHP 团队在改进 PHP 语言和性能方面做得非常出色, PHP 8.4于11月发布,Drupal 11.1完全支持它。

Drupal CMS 1.0 将基于 Drupal 11.1

Drupal 11.1将成为Drupal CMS 1.0的基础,该版本将于1月15日Drupal 24岁生日那天发布。 Drupal 核心中引入的许多底层改进将有助于在 Drupal CMS 中改善用户体验。 Drupal CMS 的第一个候选版本已经基于 Drupal 11.1 RC。

 

节选自:https://www.drupal.org/blog/drupal-11-1-0