You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 9.2中template_preprocess_image钩子不生效如何解决?

Drupal 9.2 版本preprocess_image钩子不生效解决方案
  • 修正钩子命名:你代码中的theme需要替换为你当前启用主题的机器名,例如你的主题机器名为my_custom_theme,钩子应命名为my_custom_theme_preprocess_image,且代码必须放在主题根目录下和机器名同名的.theme文件中(例如my_custom_theme.theme)。
  • 修正属性修改逻辑:Drupal 9版本中图片的宽高属性存储在attributes数组下,你原代码的unset逻辑无效,修改后代码应为:
function my_custom_theme_preprocess_image(&$variables) {
  $variables['attributes']['loading'] = 'auto';
  unset($variables['attributes']['height'], $variables['attributes']['width']);
}
  • 清空全站缓存:Drupal的钩子实现会被缓存,修改代码后必须进入后台「配置」-「性能」点击「清空所有缓存」,或用Drush命令drush cr清空缓存,钩子才会被识别。
  • 适配响应式图片场景:如果你站点使用了响应式图片样式,需要改用hook_preprocess_responsive_image钩子处理,默认的preprocess_image不会作用于响应式图片渲染。
  • 排查钩子覆盖冲突:如果以上配置都正确仍不生效,可检查是否有父主题、其他模块实现了同名的preprocess_image钩子,优先级更高覆盖了你的实现,可通过hook_module_implements_alter调整你的钩子执行顺序到最后。
  • 可选全局配置调整:如果不需要全局默认懒加载,也可以直接进入后台「配置」-「媒体」-「图片设置」,取消勾选「Enable lazy loading for images by default」即可全局移除默认的lazy属性。

内容的提问来源于stack exchange,提问作者kowsalya v

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:45:04