如何在views-view.html.twig文件中获取内容类型drupal 8

时间:2018-04-15 15:04:34

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

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

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

请注意,我不想在views-view-fields模板中执行此操作。

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

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

1 个答案:

答案 0 :(得分: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.twig views-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 %}