【问题标题】:Use variable and filter within tag in nunjucks + eleventy在 nunjucks + 十一中的标签内使用变量和过滤器
【发布时间】:2020-01-22 11:17:02
【问题描述】:

我是一个 nunjucks 新手 - 和 110 一起尝试一下。

短版:我可以在 nunjucks 的标签中使用变量和过滤器吗?例如:

{% 设置 myVar = {{ 标题 |降低 }} %}

(假设 {{ title }} 变量设置正确)

更长的版本/我的具体用例:

我正在尝试创建一个名为 section.njk 的布局文件并将其用于多个页面(基本上是我网站每个部分的部分首页 - 类似于 Hugo 中的 section.html 布局文件的想法)我有一个数据文件对于每个部分,包含该部分的菜单。

给定以下文件:

  • guides.json
  • index.md 与 frontmatter 包括标题:“指南”

这不起作用:

{% for item in {{ title | lower }} %}
<a href="{{ item.url | url }}"><div>{{ item.title }}</div></a>
{% endfor %}

这行得通:

{% for item in guides %}
<a href="{{ item.url | url }}"><div>{{ item.title }}</div></a>
{% endfor %}

所以我想知道问题是否在于在 Nunjucks 的标签中使用变量,如果是,是否有办法解决?

整个项目源码在这里:https://github.com/StarfallProjects/tech-writer-toolkit/tree/11ty(11ty 的东西在 src 中)

感谢您的帮助。

【问题讨论】:

    标签: nunjucks eleventy


    【解决方案1】:

    是的,你可以。

    {% set myVar = title | lower  %}
    {% set myVar = title | lower + var2 | upper %}
    {% set myVar = (title | lower  + var2) | trim %}
    ...
    {% for item in items | sort(false, true)  %}
    <a href="{{ item.url | url }}"><div>{{ item.title | lower}}</div></a>
    {% endfor %}
    

    loweruppertrim 过滤器适用于数字/字符串变量。它们不能应用于某些数组(或对象)。 另一方面,sort-filter 需要一个数组作为输入。

    过滤器“类型”在docs 中的描述很明显。

    【讨论】:

    • 谢谢!按照您的描述设置变量是可行的,但奇怪的是您对我的具体案例的回应 {% for item in title |较低的 %} 没有。我想知道这是否是一件十件事——也许它必须有一个字符串而不是一个变量才能去寻找数据文件之类的东西?
    • 这也不起作用:{% set myVar = title | lower %} {{ myVar }} {% for item in myVar %}
      {{ item.title }}
      {% endfor %}
    猜你喜欢
    • 2015-02-03
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多