Drupal多值Paragraph字段分栏显示异常求助:列3无内容且行重复
解决Drupal Paragraph模板列无内容+行重复问题
1. 先确认字段多值设置
得先检查field_name和field_bio这两个字段,在Paragraph类型的配置里是不是设成了允许多个值(至少允许2个),不然根本存不了两位人员的信息,这是基础。
2. 修正Twig模板代码
你的问题主要出在两处:
- 直接用
content.field_name.1这种方式访问多值字段内容不对,Drupal的渲染数组里,多值字段的单个项得用正确的方式获取; - 模板里大概率还留着默认的
{{ content }}输出,这会导致行结构重复渲染。
给你两种修改方案,按需选择:
方案一:直接取字段原始值(适合不需要字段格式渲染的场景)
{# 一定要删掉模板里默认的 {{ content }} 语句,不然会重复 #} <div class="row"> <div class="col-4"> {# 第一位人员的信息 #} {% if content.field_name['#items'] is not empty %} <h3>{{ content.field_name['#items'].0.value }}</h3> {% endif %} {% if content.field_bio['#items'] is not empty %} <p>{{ content.field_bio['#items'].0.value }}</p> {% endif %} </div> <div class="col-4"> {# 中间空列 #} </div> <div class="col-4"> {# 第二位人员的信息,先判断有没有第二值 #} {% if content.field_name['#items']|length > 1 %} <h3>{{ content.field_name['#items'].1.value }}</h3> {% endif %} {% if content.field_bio['#items']|length > 1 %} <p>{{ content.field_bio['#items'].1.value }}</p> {% endif %} </div> </div>
方案二:保留字段渲染格式(适合字段有格式设置的场景)
如果你的字段设置了文本格式(比如富文本),用这个方案能保留原有格式:
<div class="row"> <div class="col-4"> {{ render(content.field_name.0) }} {{ render(content.field_bio.0) }} </div> <div class="col-4"></div> <div class="col-4"> {# 先判断第二值是否存在,避免报错 #} {% if content.field_name.1 is defined %} {{ render(content.field_name.1) }} {% endif %} {% if content.field_bio.1 is defined %} {{ render(content.field_bio.1) }} {% endif %} </div> </div> {# 必须删掉默认的 {{ content }},否则行重复 #}
3. 最后别忘了清缓存
改完模板一定要去Drupal后台的「配置→性能」里清除所有缓存,不然新模板不会生效。
排查小技巧
- 要是第三列还是没内容:去检查Paragraph实例里是不是真的填了两位人员的信息,字段值有没有保存成功;
- 要是行还重复:仔细看模板里有没有漏删
{{ content }}语句,这个是重复的关键原因。
内容的提问来源于stack exchange,提问作者Munya
相关产品推荐
相关产品推荐

