如何在Drupal模板中匹配段落下拉列表字段的值
解决Drupal段落下拉字段值匹配与样式切换问题
嘿,我来帮你搞定这个Drupal段落里的下拉选项匹配和样式切换的问题!先看看你现有代码里的几个小问题,再给你修正后的方案:
你当前代码的问题
- 字段值访问路径不对:你是在当前段落里直接加的下拉字段(
field_selector),不需要去循环content.field_paragraph_jumbotron['#items'],直接从段落实体本身获取值更可靠。 - HTML转义没必要:在Twig模板里可以直接写原生HTML标签,不用写成
<或者",这样代码更易读。 - 样式类重复:你给
dark和light选项设置的div类完全一样,这会导致选这两个选项时显示效果没有区别,得调整一下。
修正后的Twig代码
{% set paragraph = content['#paragraph'] %} {# 获取下拉字段的值,默认设为light防止空值 #} {% set selector_value = paragraph.field_selector.value|default('light') %} {% block content %} {% if selector_value == 'big' %} <div class="p-5 mb-4 bg-light rounded-3"> {{ content.field_paragraph_content }} {# 替换成你段落里存放内容的字段机器名 #} </div> {% elseif selector_value == 'dark' %} <div class="h-100 p-5 text-white bg-dark rounded-3"> {{ content.field_paragraph_content }} </div> {% else %} {# light选项对应的样式,这里和dark区分开 #} <div class="h-100 p-5 text-dark bg-light rounded-3"> {{ content.field_paragraph_content }} </div> {% endif %} {% endblock %}
关键说明
- 获取段落实体:
content['#paragraph']直接指向当前编辑的段落实体,通过它可以直接访问段落上的所有字段,包括你的field_selector下拉字段。 - 默认值处理:用
|default('light')可以避免字段为空时出现判断失效的情况,保证页面正常渲染。 - 调试技巧:如果还是拿不到值,可以在模板里加
{{ dump(paragraph.field_selector) }}(开启Twig调试后),查看字段的结构,确认值的正确获取路径。
内容的提问来源于stack exchange,提问作者OCTOGONE.dev
相关产品推荐
相关产品推荐

