Используйте переменную и фильтр в теге в 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 ожидает на входе массив.

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

Другие вопросы по тегам