Drupal 10:如何在Paragraphs模块的paragraph.html.twig中检查内容类型?
在Drupal 10 Paragraphs模板中检查内容类型的方法
直接通过Paragraph父实体获取节点内容类型
Paragraph是依附于父实体的字段组件,你可以通过paragraph.parentEntity访问它所属的节点,再获取内容类型标识。修改你的逻辑代码如下:{% if paragraph.parentEntity.bundle == 'universal_page' %} {# 执行X操作 #} {% else %} {# 执行Y操作 #} {% endif %}若Paragraph可能被用于节点以外的实体(如媒体、用户),可以先判断父实体类型避免报错:
{% if paragraph.parentEntity.entityTypeId == 'node' and paragraph.parentEntity.bundle == 'universal_page' %} {# 执行X操作 #} {% else %} {# 执行Y操作 #} {% endif %}通过主题预处理函数传递节点信息
- 在你的主题
.theme文件中添加以下预处理代码,将节点的内容类型传递到Paragraph模板变量中:
注意将function YOUR_THEME_NAME_preprocess_paragraph(&$variables) { $paragraph = $variables['paragraph']; $parent_entity = $paragraph->getParentEntity(); if ($parent_entity && $parent_entity->getEntityTypeId() == 'node') { $variables['node_bundle'] = $parent_entity->bundle(); } }YOUR_THEME_NAME替换为你的实际主题名称。 - 随后在
paragraph.html.twig中直接使用变量判断:{% if node_bundle == 'universal_page' %} {# 执行X操作 #} {% else %} {# 执行Y操作 #} {% endif %}
- 在你的主题
内容的提问来源于stack exchange,提问作者User301276
相关产品推荐
相关产品推荐

