我试图解决的问题是:我需要一个唯一的(但人类可读的)类名,以便能够根据显示的术语设置分类术语页面的样式。我尝试了几种方法都没有成功,最接近的是:
我的观点-view.html.twig摘录:
{% set tid = view.argument["tid"].value[0] %}
HEREITIS:{{tid}}<br/>
{% set pathclass = path('entity.taxonomy_term.canonical', {'taxonomy_term': 48}) | replace({'/': '-'}) %}
{%
set classes = [
dom_id ? 'js-view-dom-id-' ~ dom_id,
tid,
pathclass,
]
%}
<div{{ attributes.addClass(classes) }}>
它产生了我几乎可以使用的结果:
<!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'sites/bezdatu.test/themes/qq/templates/views/views-view.html.twig' -->
HEREITIS:48<br/>
<div class="view-taxonomy-term contextual-region js-view-dom-id-8549dd661... 48 -category-holiday">
请注意,结果中的两个数字“
48
”都来自tid
变量,并且“-category-holiday
”是根据硬编码的“48
”数字正确计算的。然而,“硬编码”是唯一的工作场景,我完全不知道为什么要改变
path('entity.taxonomy_term.canonical', {'taxonomy_term': 48})
到
path('entity.taxonomy_term.canonical', {'taxonomy_term': tid})
导致“意外错误”,表示我传递了一个空值:
网站遇到意外错误。稍后再试。
Symfony\Component\Routing\Exception\InvalidParameterException: 路由“entity.taxonomy_term.canonical”的参数“taxonomy_term” 必须匹配“[^/]++”(给出“”)才能生成相应的URL。在 Drupal\Core\Routing\UrlGenerator->doGenerate() (第 202 行 核心/lib/Drupal/Core/Routing/UrlGenerator.php)。
变量不是空的,它是“48”,我唯一的猜测是在计算变量值或视图参数可用之前解析树枝模板。是否有任何修复此方法或任何其他简单方法来添加路径别名作为 css 类名而不需要摆弄 javascript?
也许另一个视图也在渲染?不是分类视图,但仍使用views-view.html.twig 模板的视图?尝试将模板文件重命名为更具体的分类视图,以便该模板仅用于该视图。