我在做一些我认为应该是相对简单的drupal 8观点的事情。
我有一个名为Countries的内容类型。我想在一个视图块中显示我主页上的3个最新国家节点。每个国家/地区都在容器div上显示“views-row”类。我正在使用views - view - unformatted - countries - 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>
我遇到的问题是访问模板中的各个字段。如果我使用视图模式,我可以访问各个字段。如果我在视图中选择“显示字段”,我可以为“查看结果计数器”和“路径”添加一个字段,这将允许我添加“view-row-N”类并将a标记链接到节点,但我无法单独访问这些字段。我有{{row.content}}变量,但任何进一步挖掘变量的尝试(例如row.content.field_name)都没有给我任何信息并且调用{{dump(row.content)}}会使网站崩溃。 / p>
由于两个原因,我无法将其输出为视图模式。我无法访问视图模式中的“查看结果计数器”或“路径”字段,即使我有这些变量,一些字段也会嵌套在其他字段中(图像和标题嵌套在其中)
我觉得这应该像
一样简单<a class="view-row-{{ row.content.view_result_counter }}" href="{{ row.content.path }}">
等等,但我已经尝试了我能想到的一切。我完全走错了路吗?到目前为止,Twig和我不相处......
答案 0 :(得分:12)
我已经找到了使用kint的方法。
在views-view-unformatted.html.twig中,使用以下代码显示您的各个字段:
{% for row in rows %}
{{ row.content['#view'].style_plugin.render_tokens[ loop.index0 ]['{{ YOUR_FIELD_NAME }}'] }}
{% endfor %}
答案 1 :(得分:0)
使用内容/视图模式适用于您的情况。
1 / In&#34; views-view-unformatted.html.twig&#34;你可以使用&#34; loop.index&#34;在&#34; for&#34;循环获取当前行的索引并将其添加到&#34; row_classes&#34;变量
2 /在节点的树枝模板中,您可以使用以下内容:
<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">
{{ content.field_img }}
{{ node.getTitle()}}
</a>
3 /您可能会获得额外的HTML,但您可以通过覆盖相关模板来摆脱大部分内容。
答案 2 :(得分:0)
我不确定这是否符合您的期望,但您可以覆盖字段模板:
您可以使用xa:
或xd:
答案 3 :(得分:0)
在您的情况下,您应该使用views-view-fields - countries - block_1.html.twig而不是views-view-unformatted - countries - block_1.html。树枝文件。
视图字段模板将迭代结果的所有行。您的views-view-fields - countries - block_1.html.twig应包含以下代码 -
<div>
<a class="view-row" href="{{variable-to-print-path }}">
<img src="{{ image-path }}">
<h3>{{ fields.title.content</h3>
</a>
</div>
您可以使用kint函数检查字段数组,例如 - {{kint(fields)}}
从kint函数的输出中检查图像路径和锚路径变量。
如果您想在views-view-unformatted - countries - block_1.html中执行此操作。 twig,然后你可以访问如下字段值 -
{% for row in rows %}
{% set photo = file_url(row['content']['#row']._entity.field_page_photo.entity.fileuri) %}
<li><img src={{ photo }} class="img-responsive img-circle"></li>
{% endfor %}
答案 4 :(得分:0)
解决方案很简单,使用视图字段模板。
我在theme / templates文件夹下创建了一个新模板:
views-view-fields--VIEW-NAME.html.twig
现在您可以像这样访问字段值:
{{ fields.field_NAME.content }}
答案 5 :(得分:0)
如果要访问“视图树枝模板”中的“各个”字段以及“行信息”, 在您的自定义主题中覆盖“视图字段模板”:
views-view-fields--VIEW-NAME.html.twig
要在同一文件中获取行索引,请使用:
{{ row.index }}