在 Drupal 8 视图模板中应用树枝过滤器
Applying twig filters in Drupal 8 Views Template
我正在使用 twig 在 Drupal 8 中构建主题视图。我想在 views-view-unformatted.html.twig 模板中的 row.content 变量上使用 twig 过滤器。
似乎 row.content 是一个数组,所以 twig 的字符串操作不起作用。但是,它作为字符串打印到页面上(视图只是分类术语列表)。
我想做的是对输出进行 slugify,以便带空格的分类术语可以具有有效的 href。请参阅下面代码中的替换过滤器。
<ul class="nav nav-tabs" role="tablist">
{% for row in rows %}
<li role="presentation" class="{{loop.first ? 'active' : ''}}">
<a href="#{{row.content | replace({" ", "-"})}}" aria-controls="{{row.content}}" role="tab" data-toggle="tab">{{row.content}}</a>
</li>
{% endfor %}
</ul>
这只会输出<a href="#">
。有谁知道如何访问在细枝插值期间输出的原始文本值?
谢谢!
我自己 运行 对此很困难,因为 kint 和 dump 在视图上崩溃。
不过,有一个快速解决方法可以解决这些问题,将其放在树枝视图样式模板中的 {% for row in rows %} 下。
<ol>
{% for key, value in row.content %}
<li>{{ key }}</li>
{% endfor %}
</ol>
用它加载页面并为您提供要查看的键,我使用以下转储命令检查了它们,只是在下面添加以进行测试。
{{ dump(row.content['#row']) }}
上面的转储显示了#row 中的所有商品,我在那里挖掘并在 _entity 中找到了我想要的字段(对你来说可能不同),然后我想用破折号替换空格并强制小写。
row.content['#row'] 之后的所有内容对您来说可能有所不同,您需要使用提到的 dump 命令深入了解数组多于。
下面是让我得到我想要的东西的那一行。
{{ row.content['#row']._entity.title[0].value|replace(' ', '-')|lower }}
下面是树枝模板示例。
对于文件名,将 viewname 和 block-3 更改为您的设置。
views-view-unformatted--viewname--block-3.html.twig
{% for row in rows %}
{%
set row_classes = [
default_row_class ? 'views-row',
'something',
'kint-cant',
]
%}
{# My field value unformatted #}
<!-- {{ row.content['#row']._entity.title[0].value }} -->
<section{{ row.attributes.addClass(row_classes) }} id="{{ row.content['#row']._entity.title[0].value|replace(' ', '-')|lower }}">
{{ row.content }}
</section>
{% endfor %}
我确信还有很多其他方法可以做到这一点,但它对我来说是一种快速解决方案,可以在样式模板中打印出视图字段,这非常有用。
我正在使用 twig 在 Drupal 8 中构建主题视图。我想在 views-view-unformatted.html.twig 模板中的 row.content 变量上使用 twig 过滤器。
似乎 row.content 是一个数组,所以 twig 的字符串操作不起作用。但是,它作为字符串打印到页面上(视图只是分类术语列表)。
我想做的是对输出进行 slugify,以便带空格的分类术语可以具有有效的 href。请参阅下面代码中的替换过滤器。
<ul class="nav nav-tabs" role="tablist">
{% for row in rows %}
<li role="presentation" class="{{loop.first ? 'active' : ''}}">
<a href="#{{row.content | replace({" ", "-"})}}" aria-controls="{{row.content}}" role="tab" data-toggle="tab">{{row.content}}</a>
</li>
{% endfor %}
</ul>
这只会输出<a href="#">
。有谁知道如何访问在细枝插值期间输出的原始文本值?
谢谢!
我自己 运行 对此很困难,因为 kint 和 dump 在视图上崩溃。 不过,有一个快速解决方法可以解决这些问题,将其放在树枝视图样式模板中的 {% for row in rows %} 下。
<ol>
{% for key, value in row.content %}
<li>{{ key }}</li>
{% endfor %}
</ol>
用它加载页面并为您提供要查看的键,我使用以下转储命令检查了它们,只是在下面添加以进行测试。
{{ dump(row.content['#row']) }}
上面的转储显示了#row 中的所有商品,我在那里挖掘并在 _entity 中找到了我想要的字段(对你来说可能不同),然后我想用破折号替换空格并强制小写。
row.content['#row'] 之后的所有内容对您来说可能有所不同,您需要使用提到的 dump 命令深入了解数组多于。 下面是让我得到我想要的东西的那一行。
{{ row.content['#row']._entity.title[0].value|replace(' ', '-')|lower }}
下面是树枝模板示例。 对于文件名,将 viewname 和 block-3 更改为您的设置。
views-view-unformatted--viewname--block-3.html.twig
{% for row in rows %}
{%
set row_classes = [
default_row_class ? 'views-row',
'something',
'kint-cant',
]
%}
{# My field value unformatted #}
<!-- {{ row.content['#row']._entity.title[0].value }} -->
<section{{ row.attributes.addClass(row_classes) }} id="{{ row.content['#row']._entity.title[0].value|replace(' ', '-')|lower }}">
{{ row.content }}
</section>
{% endfor %}
我确信还有很多其他方法可以做到这一点,但它对我来说是一种快速解决方案,可以在样式模板中打印出视图字段,这非常有用。