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

如何在Drupal的Paragraph模板中显示Media library文件的media标签

Drupal Paragraph模板显示媒体分类标签解决方案

完全可以在Paragraph template中显示Media library中媒体资源关联的Taxonomy term分类标签,操作方法如下:

前置准备

先确认两个核心字段的机读名:

  • Paragraph类型中引用媒体资源的字段机读名,下文示例以field_paragraph_media代指
  • Media实体上绑定的标签字段(关联分类术语的引用字段)机读名,下文示例以field_media_tags代指
    实际使用时请将示例中的字段名替换为你站点的实际配置。

实现方式1:预处理注入变量(符合Drupal开发规范)

将以下代码添加到你所用主题的根目录.theme文件中:

function 你的主题机读名_preprocess_paragraph__目标Paragraph类型机读名(&$variables) {
  $paragraph = $variables['elements']['#paragraph'];
  // 校验并获取Paragraph关联的媒体实体
  if ($paragraph->hasField('field_paragraph_media') && !$paragraph->get('field_paragraph_media')->isEmpty()) {
    $media = $paragraph->get('field_paragraph_media')->entity;
    // 校验并获取媒体关联的分类标签
    if ($media->hasField('field_media_tags') && !$media->get('field_media_tags')->isEmpty()) {
      $tags = [];
      foreach ($media->get('field_media_tags')->referencedEntities() as $term) {
        // 仅输出标签名
        $tags[] = $term->label();
        // 如需输出带跳转链接的标签,替换上一行代码为:
        // $tags[] = \Drupal\Core\Link::fromTextAndUrl($term->label(), $term->toUrl())->toString();
      }
      $variables['media_tags'] = $tags;
    }
  }
}

添加后清空Drupal缓存,就可以在对应的Paragraph模板中直接使用{{ media_tags }}变量输出标签列表。

实现方式2:直接在Twig模板中调用

无需修改PHP代码,直接在对应Paragraph的Twig模板(命名格式通常为paragraph--[Paragraph类型机读名].html.twig)的目标位置插入以下代码即可:

{% if paragraph.field_paragraph_media.entity.field_media_tags is not empty %}
  <div class="media-tags">
    {% for tag_item in paragraph.field_paragraph_media.entity.field_media_tags %}
      {# 仅输出标签名 #}
      <span class="tag-item">{{ tag_item.entity.name.value }}</span>
      {# 如需输出带跳转链接的标签,替换上一行代码为:
      <span class="tag-item"><a href="{{ path('entity.taxonomy_term.canonical', {'taxonomy_term': tag_item.entity.id}) }}">{{ tag_item.entity.name.value }}</a></span>
      #}
    {% endfor %}
  </div>
{% endif %}

注意事项

  • 如果Paragraph的媒体引用字段支持多值,需要先遍历所有媒体实体,再分别输出每个媒体对应的标签
  • 开启Twig调试模式后,可以通过{{ dump(变量名) }}打印变量结构,确认字段层级是否和你站点的配置匹配
  • 多语言站点需要先对分类术语做语言适配,再输出对应语言的标签名

内容的提问来源于stack exchange,提问作者ZEF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 20:54:03