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

Drupal 8.4.3中Twig模板无法显示区块问题求助

解决Drupal 8.4.3主题模板调用区块的问题

刚看了你的问题,咱们一步步来拆解解决这个Twig模板调用区块的问题:

先搞懂第一个报错的核心原因

你一开始碰到的 Twig_Error_Syntax: Unknown "drupal_block" function,本质是Drupal核心的Twig环境本身不带drupal_block()这个函数——这个功能是Twig Tweak模块提供的扩展能力,所以你安装Twig Tweak是走对了第一步,但之后出现的区块损坏提示,得从这几个方向排查:

排查区块相关的关键问题

1. 区块机器名必须完全精准

你提到区块ID是estarmejor_branding,这里要注意:

  • Drupal的区块机器名是大小写敏感的,必须和后台「结构→区块」里显示的完全一致(别把下划线写成连字符,或者大小写搞混)
  • 不确定的话,直接去后台打开这个区块的编辑页面,URL里的最后一段就是准确的机器名(比如/admin/structure/block/manage/estarmejor_branding里的estarmejor_branding)

2. 区块必须启用且分配到对应区域

就算机器名对了,如果区块没启用,或者没分配到当前主题的某个区域(比如你自定义的header区域),Twig Tweak调用时就会提示损坏。

  • 去后台「结构→区块」找到这个区块,先确认它的状态是「已启用」,再看它是不是被分配到了你当前在用的Estar Mejor主题的某个区域里。

3. 区块依赖的模块得处于启用状态

报错里那句"Es posible que tenga que activar el módulo original"(可能需要启用原始模块),意思是这个区块属于某个特定模块:

  • 如果是你自己创建的自定义区块,得确认创建它的那个自定义模块已经启用了
  • 如果是系统自带的区块(比如品牌区块),要检查System模块有没有启用

4. 确认Twig Tweak的调用语法无误

Drupal 8里Twig Tweak调用区块的正确写法就是你用的这个:

{{ drupal_block('estarmejor_branding') }}

如果需要临时覆盖区块的配置(比如修改显示标签),可以传参数数组:

{{ drupal_block('estarmejor_branding', {label: '我的自定义标题'}) }}

备用方案:用标准区域渲染替代Twig Tweak

要是上面的排查都没问题还是不行,你可以试试Drupal主题的标准玩法:把estarmejor_branding区块分配到你自定义的header区域,然后直接在模板里渲染这个区域就行:

<header id="navbar" role="banner">
  <div class="container">
    {{ page.header }}
  </div>
</header>

这种方式不依赖第三方模块,稳定性更高,也是Drupal主题开发的常规做法。

最后别忘了清缓存!

每次修改模板、调整区块配置之后,一定要去后台「配置→性能」里清除所有缓存——Drupal的Twig模板和区块配置都有缓存机制,不清缓存的话可能看不到修改效果,甚至会出现奇怪的报错。另外,要注意你安装的Twig Tweak版本得和Drupal 8.4.3兼容,8.4.x对应的是Twig Tweak 1.x系列,别装2.x版本(那是给Drupal 9+用的)。

内容的提问来源于stack exchange,提问作者Elizabeth Alcalá

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:23:41