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

Drupal中Twig模板inline_css过滤器报未知错误求助

解决Drupal中Twig inline_css 过滤器未知的问题

问题根源

Drupal的Twig执行环境独立于Symfony的Twig Bundle,即便通过Composer安装了twig/cssinliner-extra和twig/extra-bundle,这些扩展也不会自动被Drupal的Twig系统加载,导致inline_css过滤器无法被识别。

解决方案:手动注册Twig扩展

你需要创建一个自定义Drupal模块,将InlineCssExtension注册到Drupal的Twig服务中:

  1. 创建自定义模块

    • 在modules/custom目录下新建模块(比如命名为twig_css_inliner),包含以下文件:
      • twig_css_inliner.info.yml(模块信息文件)
      name: Twig CSS Inliner
      type: module
      description: 为Drupal注册Twig的inline_css过滤器
      core_version_requirement: ^9 || ^10
      package: Custom
      
      • twig_css_inliner.services.yml(服务注册文件)
      services:
        twig_css_inliner.inline_css_extension:
          class: Twig\Extra\CssInliner\CssInlinerExtension
          tags:
            - { name: twig.extension }
      
  2. 启用模块

    • 运行Drush命令启用:drush en twig_css_inliner -y,或在Drupal后台模块管理页面手动启用。
  3. 验证效果

    • 重新发送测试邮件,{% apply inline_css %}标签即可正常工作,CSS样式会被内联到邮件元素中。

替代方案:利用Simplenews内置机制(可选)

如果不想自定义模块,也可以借助Simplenews的邮件渲染逻辑:

  • 将CSS写在模板的<style>标签内,配合Mail System模块选择支持CSS内联的邮件后端(如SwiftMailer的CSS内联插件),不过这种方式的可控性不如Twig过滤器直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:35:18