问题描述
我正在使用 Nunjucks(与 Eleventy)并且一直在重构一些导航 html 以简化事情。我已经用下面定义的宏替换了所有的“a”导航标签:
{% macro link(path,label,level) %}
<!-- path = '{{ path }}/',page.url = '{{ page.url }}' -->
<a href="{{ path }}/index.html"
class="level_{{ level }} {{ 'current' if '{{path}}/' == page.url }}"><span>{{ label }}</span></a>
{% endmacro %}
我现在发现以前运行良好的“if”语句在宏中使用时不再起作用。其目的是为指向用户当前所在页面的链接分配“当前”类。
注意宏中的注释。这是一个测试,所以我可以看到被比较的值是什么。奇怪的是,测试表明这些值没有任何问题,但“if”语句仍未运行。例如,这是当前页面(应分配“当前”类)的链接的注释中出现的内容的示例:`。如您所见,这两个值是相同的。那么为什么“if”测试会失败?
解决方法
好的,问题似乎出在插值上。改成这样就可以了:
{% macro link(path,label,level) %}
<a href="{{ path }}/index.html"
class="navLink level_{{ level }} {{ 'current' if (path+"/" == page.url) }}"><span>{{ label }}</span></a>
{% endmacro %}