访问Drupal 8视图模板中的各个字段

Kai*_*001 9 views templating twig drupal-8

我在做一些我认为应该是相对简单的drupal 8视图的问题.

我有一个名为Countries的内容类型.我想在一个视图块中显示我主页上的3个最新国家节点.每个国家/地区都在容器div上显示"views-row"类.我正在使用视图 - 视图 - 未格式化 - 国家/地区 - block_1.tpl来模拟输出.

我想输出类似以下标记的内容:

<a class="view-row-1" href="/link/to/node">
    <img src="source-of-teaser-image.png">
    <h3>Title of node</h3>
</a>

<a class="view-row-2" href="/link/to/node">
    <img src="source-of-teaser-image.png">
    <h3>Title of node</h3>
</a>

<a class="view-row-3" href="/link/to/node">
    <img src="source-of-teaser-image.png">
    <h3>Title of node</h3>
</a>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是访问模板中的各个字段.如果我使用视图模式,我可以访问各个字段.如果我在视图中选择"显示字段",我可以为"查看结果计数器"和"路径"添加一个字段,这将允许我添加"view-row-N"类并将a标记链接到节点,但我无法单独访问这些字段.我有{{row.content}}变量,但任何进一步挖掘变量的尝试(例如row.content.field_name)都没有给我任何信息并且调用{{dump(row.content)}}会使网站崩溃.

由于两个原因,我无法将其输出为视图模式.我无法在视图模式下访问"查看结果计数器"或"路径"字段,即使我有这些变量,某些字段也会嵌套在其他字段中(图像和标题嵌套在其中)

我觉得这应该真的很简单

<a class="view-row-{{ row.content.view_result_counter }}" href="{{ row.content.path }}">
Run Code Online (Sandbox Code Playgroud)

等等,但我已经尝试了我能想到的一切.我完全走错了路吗?到目前为止,Twig和我相处得不好......

小智 14

我已经找到了使用kint的方法.

在views-view-unformatted.html.twig中,使用以下代码显示您的各个字段:

{% for row in rows %}

{{ row.content['#view'].style_plugin.render_tokens[ loop.index0 ]['{{ YOUR_FIELD_NAME }}'] }}

{% endfor %}
Run Code Online (Sandbox Code Playgroud)


小智 0

使用内容/视图模式适用于您的情况。

1/ 在“views-view-unformatted.html.twig”中,您可以在“for”循环中使用“loop.index”来获取当前行的索引并将其添加到“row_classes”变量中。

2/在节点的树枝模板中,您可以使用类似以下内容的内容:

<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">
    {{ content.field_img }}
    {{ node.getTitle()}}
</a>
Run Code Online (Sandbox Code Playgroud)

3/您可能会获得额外的 html,但您可以通过覆盖相关模板来删除大部分内容。