11ty Second 11ty: Создание фильтров шаблонов

Фильтры шаблонов 11ty — это способы манипулирования данными в теге переменной на выбранном вами языке шаблонов. Каждый язык шаблонов предлагает свой собственный набор, а 11ty также добавляет несколько фильтров по умолчанию.

Использование встроенного фильтра

Чтобы использовать встроенный фильтр, напишите переменную или выражение на выбранном вами языке, вот жидкий шаблон, который будет отображать строку «hi there» на странице.

<body>
    <h1>11ty Second 11ty: Filter Example</h1>
    <h2>{{ "hi there" }}</h2>
</body>
Вход в полноэкранный режим Выйти из полноэкранного режима

Получив это, добавьте символ трубы и имя фильтра. В данном случае встроенный фильтр slugify преобразует строку в подходящую для url строку.

<body>
    <h1>11ty Second 11ty: Filter Example</h1>
    <h2>{{ "hi there" | slugify }}</h2>
</body>

<!-- Outputs: <h2>hi-there</h2>
Вход в полноэкранный режим Выход из полноэкранного режима

Создание пользовательских фильтров

Чтобы создать пользовательский фильтр, нам понадобится конфигурационный файл. Мы создадим .eleventy.js в корне нашего проекта.

Оттуда мы экспортируем функцию с объектом eleventyConfig и используем метод addFilter на этом объекте.

Метод принимает два свойства, имя фильтра для использования в шаблоне и функцию, которая будет использоваться для изменения данных.

В данном случае мы создадим фильтр верхнего регистра, чтобы преобразовать нашу строку в верхний регистр. Функция, которую мы создадим, принимает в качестве первого аргумента строку, к которой применяется фильтр. В данном случае мы будем использовать string.toUpperCase() в Javascript, чтобы вернуть измененную строку.

module.exports = function(eleventyConfig) {
  eleventyConfig.addFilter("uppercase", function(string) {
    return string.toUpperCase();
  })
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Затем мы можем использовать это в шаблоне:

 <h1>11ty Second 11ty: Filter Example</h1>
 <h2>{{ "hi there" | uppercase }}</h2>
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы также можете настроить разметку вокруг строки. В данном случае мы воспользуемся плохой идеей настройки цвета строки в нашем фильтре. Любой аргумент после первого в нашем фильтре будет опциями, которые могут быть переданы фильтру. В данном случае это строка цвета. Мы можем обернуть строку в span и установить цвет в строке.

module.exports = function(eleventyConfig) {
  eleventyConfig.addFilter("uppercase", function(string) {
    return string.toUpperCase();
  })

  eleventyConfig.addFilter("color", function(string, color) {
    return `<span style="color: ${color}">${string}</span>`;
  })
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Затем мы можем использовать это в шаблоне:

 <h1>11ty Second 11ty: Filter Example</h1>
 <h2>{{ "hi there" | color: "red" }}</h2>
Войти в полноэкранный режим Выйти из полноэкранного режима

И многое другое!

Фильтры могут быть очень мощным элементом ваших 11ty билдов. Они позволяют изменять данные на лету, независимо от источника. Все, что вы можете сделать на Javascript, вы можете сделать в фильтре, поэтому поиграйте с такими вещами, как создание фильтра строки даты для Nunjucks (доступно только в Liquid) или переупорядочивание массива или создание сильного набора HTML шаблонов для общих случаев использования в вашей разметке или разметке.

Оцените статью
devanswers.ru
Добавить комментарий