在 nunjucks + 十一中的标签内使用变量和过滤器

Posted

技术标签:

【中文标题】在 nunjucks + 十一中的标签内使用变量和过滤器【英文标题】:Use variable and filter within tag in nunjucks + eleventy 【发布时间】: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 中)

感谢您的帮助。

【问题讨论】:

【参考方案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 %

以上是关于在 nunjucks + 十一中的标签内使用变量和过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf(第九十一二章)本地变量#属性优先级#注释和块#内联

Nunjucks简介&基本使用教程

如何在 nunjucks 中使用 JSON.parse

nunjucks.js模板渲染

Nunjucks for 循环运行两次

检查 Nunjucks 中的字符串是不是为空?