Используйте переменную и фильтр в теге в nunjucks + eleventy
Я новичок в nunjucks - пробую его вместе с Eleventy.
Краткая версия: могу ли я использовать переменные и фильтры в тегах в nunjucks? Например:
{% set myVar = {{title | ниже}}%}
(предположим, что переменная {{ title }} установлена правильно)
Более длинная версия / мой конкретный вариант использования:
Я пытаюсь создать файл макета с именем section.njk и использовать его на нескольких страницах (в основном это главные страницы каждого раздела моего сайта - идея аналогична файлу макета section.html в Hugo). У меня есть файл данных для каждого раздела, содержащий меню для этого раздела.
Учитывая следующие файлы:
- guides.json
- index.md с обложкой, включающей заголовок: "Руководства"
Это не работает:
{% 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 %}
В lower
, upper
а также trim
фильтры применяются к числовым / строковым переменным. Их нельзя применить к какому-либо массиву (или объекту). С другой стороны,sort
-filter ожидает на входе массив.
"Тип" фильтра очевиден по его описанию в документации.