【问题标题】:How can I target the first item in a Drupal view?如何定位 Drupal 视图中的第一个项目?
【发布时间】:2020-12-22 20:07:56
【问题描述】:

我有一个 Drupal 视图页面,其中显示了所有已发布的最新文章。我想在不同的 div 中单独展示最新文章,然后将我的循环与所有其他文章一起展示。

这是我的循环代码,在 node--view.html.twig 文件中 -

    <div{{ attributes.addClass('col-4')}}>
      <div class="news-card">
        <img src="{{ file_url(node.field_image.entity.fileuri) }}">
        <h3>{{ node.label }}</h3>
        {% set text = content.body|render|striptags %}
        <p>{{ text|length > 100 ? text|slice(0, 120) ~ '...' : text }}</p>
        <a href="{{ url }}" class="btn black-btn">Read More</a>
      </div>
    </div>

在我的 views-view-unformatted.html.twig 文件中我有 -

<h2>{{ view.getTitle() }}</h2>
  {% if title %}
      <h3>{{ title }}</h3>
  {% endif %}
<div class="row news-row">
{% for row in rows %}
  {%
    set row_classes = [
      default_row_class,
    ]
  %}
    {{- row.content -}}
  {% endfor %}
</div>

【问题讨论】:

    标签: drupal twig drupal-views


    【解决方案1】:

    您可以使用the loop variable 来确定哪个“项目”在循环中是第一个/最后一个。

    {% if loop.first %}
        ...
    {% endif %}
    
    {% if loop.last %}
        ...
    {% endif %}
    

    你的代码

    <div class="row news-row">
    {% for row in rows %}
      {%
        set row_classes = [
          default_row_class,
        ]
      %}
        {% if loop.first %}
            First item:
        {% endif %}
    
        {% if loop.first %}
            Last item:
        {% endif %}
        {{- row.content -}}
      {% endfor %}
    </div>
    
    

    【讨论】:

    • 你知道我会把那个代码放在哪里吗?我在 views-view-unformatted.html.twig 文件中尝试了 row.content.first 但没有显示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多