Используйте переменную и фильтр внутри тега в nunjucks + одиннадцать - PullRequest
0 голосов
/ 22 сентября 2019

Я новичок в nunjucks - пробую его вместе с одиннадцатью.

Короткая версия: Могу ли я использовать переменные и фильтры внутри тегов в nunjucks?Например:

{% set myVar = {{title |lower}}%}

(предположим, что переменная {{title}} установлена ​​правильно)

Более длинная версия / мой конкретный вариант использования:

Я пытаюсь создать файл макета с именем section.njk и использовать его для нескольких страниц (в основном, разделы для каждой секции моего сайта - идея похожа на файл макета section.html в Hugo). У меня есть файл данных для каждой секции., содержащий меню для этого раздела.

Имеются следующие файлы:

  • guides.json
  • index.md с frontmatter, включающим заголовок: "Guides"

Это не работает:

{% 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 (11 штук в src)

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 23 сентября 2019

Да, вы можете.

{% 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 %}

Фильтры lower, upper и trim применяются к числовым / строковым переменным.Они не могут быть применены к некоторому массиву (или объекту).С другой стороны, sort -фильтр ожидает массив в качестве входных данных.

Фильтр "тип" очевиден по его описанию в документах .

...