【问题标题】:how to get content type in views-view.html.twig files | drupal 8如何获取views-view.html.twig 文件中的内容类型|德鲁巴 8
【发布时间】:2018-04-15 15:04:34
【问题描述】:

我有一个视图,其中显示了几种内容类型,因此我需要根据显示的内容类型过滤我在“views-view--myview.html.twig”中创建的一些自定义菜单条目当前视图。

我使用过 xdebug,但无法在我的视图中打印内容类型机器名称(我需要内容类型机器名称,而不是标签!)

请注意,我不想在 views-view-fields 模板中这样做。

我的问题是:如何在 views-view.html.twig 文件中获取内容类型(显示在视图中)?

如果有预处理功能,它也会帮助我!

【问题讨论】:

  • 有趣的第一个问题哥们。欢迎来到 SO。

标签: twig content-type drupal-views drupal-8


【解决方案1】:

views-view.html.twig 或覆盖的 twig 中,例如 views-view--myview.html.twig 您可以执行以下操作

获取第一行实体的标题

{{rows[0]['#rows'][0]['#row']._entity.getTitle()}}

获取第一行实体的类型/捆绑

{{rows[0]['#rows'][0]['#row']._entity.bundle()}}

所以要访问所有行,您可能需要一个循环 以下检查每行的实体类型/捆绑

{% for row in rows[0]['#rows'] %}  
    {% if row['#row']._entity.bundle() == 'page' %}
      <div>its a page</div>
    {% endif %}
{% endfor %}

但也许修改视图的单个行的最佳位置是在视图的特定显示中,例如 views-view-unformatted.html.twigviews-view-unformatted --myview.html.twig

为了比较,获取标题和类型/捆绑并如上所述循环遍历行

{{rows[0]['content']['#row']._entity.getTitle()}}
{{rows[0]['content']['#row']._entity.bundle()}}

{% for row in rows %}
  {% if row['content']['#row']._entity.bundle() == 'page' %}
    <div>its a page</div>
  {% endif %}
{% endfor %} 

【讨论】:

  • 不知道为什么提问者不接受这个答案,但对我来说它有效:) ...但是我们如何访问这些字段?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多