Drupal中Twig模板命名规范错误导致区块与区域无法渲染求助
Drupal自定义区块与区域Twig模板正确命名规范及问题修正
一、自定义区块模板(核心问题)
你的自定义区块类型机器名为eyebrow_text_and_heading,Drupal中自定义区块(Block Content实体)的模板必须包含block-content--前缀,正确命名应为:
block--block-content--eyebrow-text-and-heading.html.twig
你之前的文件名block--eyebrow-text-and-heading.html.twig缺少block-content--,导致Drupal无法将该模板关联到你的自定义区块类型。
模板内容可保留,确认字段名正确即可:
{% if content %} <h5 class="eyebrow">{{ content.field_eyebrow_text }}</h5> <h2 class="eyebrow-heading">{{ content.field_heading }}</h2> {% endif %}
二、区域模板
区域机器名为light_blue,你的模板名region--light-blue.html.twig是正确的,但模板内容存在两处错误:
- 开头缺少
{%标记,变量声明语法错误 container-fuid是拼写错误,应为container-fluid
修正后的区域模板代码:
{% set classes = [ 'region', 'region-' ~ region|clean_class, ] %} {% if content %} <div {{ attributes.addClass(classes) }}> <div class="container-fluid"> <div class="container"> {{ content }} </div> </div> </div> {% endif %}
三、字段模板
你当前的field--block-content--light-blue.html.twig命名完全错误,light-blue是区域名,和字段模板无关。如果需要针对该自定义区块的字段定制模板,正确的命名格式有两种:
- 针对该区块类型下的所有字段:
field--block-content--eyebrow-text-and-heading.html.twig - 针对单个字段(比如
field_eyebrow_text):field--block-content--eyebrow-text-and-heading--field-eyebrow-text.html.twig
四、关键注意事项
- 模板文件直接放在主题的
templates目录下即可,无需创建eyebrow-text-and-heading子文件夹,Drupal会自动扫描识别。 - 修改模板后必须清除Drupal缓存,否则系统不会加载新的模板文件。
- 开启Twig调试(在
settings.php中设置$settings['twig_debug'] = TRUE;),可以在页面源码中查看当前使用的模板名称及所有候选模板,便于排查匹配问题。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

