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服务中:
创建自定义模块
- 在
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: Customtwig_css_inliner.services.yml(服务注册文件)
services: twig_css_inliner.inline_css_extension: class: Twig\Extra\CssInliner\CssInlinerExtension tags: - { name: twig.extension }
- 在
启用模块
- 运行Drush命令启用:
drush en twig_css_inliner -y,或在Drupal后台模块管理页面手动启用。
- 运行Drush命令启用:
验证效果
- 重新发送测试邮件,
{% apply inline_css %}标签即可正常工作,CSS样式会被内联到邮件元素中。
- 重新发送测试邮件,
替代方案:利用Simplenews内置机制(可选)
如果不想自定义模块,也可以借助Simplenews的邮件渲染逻辑:
- 将CSS写在模板的
<style>标签内,配合Mail System模块选择支持CSS内联的邮件后端(如SwiftMailer的CSS内联插件),不过这种方式的可控性不如Twig过滤器直接。
内容的提问来源于stack exchange,提问作者Diamoniner12345
相关产品推荐
相关产品推荐

