Jekyll использует шаблонизатор Liquid для обработки шаблонов. Поддерживаются все стандартные теги и фильтры Liquid. Jekyll также добавляет несколько удобных фильтров и тегов для упрощения решения распространенных задач.

Фильтры

Описание Фильтр и его результат
Date to XML Schema Конвертирует дату в формат XML Schema (ISO 8601). {{site.time | date_to_xmlschema}} , 2008-11-07T13:07:54-08:00
Date to RFC-822 Format Конвертирует дату в формат RFC-822 для RSS фидов. {{ site.time | date_to_rfc822 }} , Mon, 07 Nov 2008 13:07:54 -0800
Date to String Конвертирует дату в короткий формат. {{ site.time | date_to_string }}, 07 Nov 2008
Date to Long String Конвертирует дату в длинный формат. {{ site.time | date_to_long_string }} , 07 November 2008
Where Выбирает все объекты в массиве по указанному значению ключа {{ site.members | where:"graduation_year","2014" }}
Where Expression Выбирает все объекты в массиве, в которых выражение является истинным {{site.members|where_exp:"item", "item.graduation_year == 2014"}} {{site.members|where_exp:"item", "item.graduation_year < 2014"}} {{site.members|where_exp:"item", "item.projects contains 'foo'"}}
Group By Группирует элементы массива по заданному свойству. {{ site.members | group_by:"graduation_year" }}, [{"name"=>"2013", "items"=>[...]}, {"name"=>"2014", "items"=>[...]}]
XML Escape Удаляет часть текста для использования в XML. {{ page.content | xml_escape }}
CGI Escape Очистка строки CGI для использования в URL. Заменяет все специальные символы на соответствующие коды %XX. {{ "foo,bar;baz?" | cgi_escape }}, foo%2Cbar%3Bbaz%3F
URI Escape Очистка строки URI. {{ "foo, bar \baz?" | uri_escape }} , foo,%20bar%20%5Cbaz?
Number of Words Возвращает количество слов в тексте. {{ page.content | number_of_words }} , 1337
Array to Sentence Конвертирует массив в предложение. Полезно для тегов списков. {{ page.tags | array_to_sentence_string }} , foo, bar, and baz
Markdownify Конвертирует строку Markdown в HTML. {{ page.excerpt | markdownify }}
Converting Sass/SCSS Конвертирует строку Sass или SCSS в CSS. {{ some_scss | scssify }} {{ some_sass | sassify }}
Slugify Конвертирует строку в строчный URL “slug”. Ниже показаны опции. {{ "The _config.yml file" | slugify }} , the-config-yml-file {{ "The _config.yml file" | slugify: 'pretty' }} , the-_config.yml-file
Data To JSON Конвертирует хэш или массив в JSON. {{ site.data.projects | jsonify }}
Sort Сортирует массив. Опциональные элементы для хэшей: 1. Имя свойства 2. Место nil (в начале или в конце). {{ page.tags | sort }} , {{ site.posts | sort: 'author' }} , {{ site.pages | sort: 'title', 'last' }}
Sample Выбирает случайный элемент массива, опционально можно задать выборку нескольких элементов {{ site.pages | sample }} {{site.pages | sample:2 }}
Array Filters Методы для работы с массивами (push, pop, shift и unshift), удаляют и добавляют элементы в конец или начало массива соответственно. Методы являются неразрушающими, то есть они не не изменяют массив, а работают с его копией. {{ page.tags | push: 'Spokane' }} ['Seattle', 'Tacoma', 'Spokane'] {{page.tags | pop }} ['Seattle'] {{page.tags | shift }} ['Tacoma'] {{page.tags | unshift: "Olympia" }} ['Olympia', 'Seattle', 'Tacoma']

Опции для фильтра slugify

Фильтр slugify принимает опцию, определяющую, что фильтровать. Дефолтная — default, а вот весь список:

  • none: ничего не фильтровать
  • raw: пробелы
  • default: пробелы и все не буквенно-цифровые символы
  • pretty: пробелы и все не буквенно-цифровые символы кроме ._~!$&’()+,;=@

Теги

Вложения

Если у вас есть небольшие фрагменты, которые вы хотите использовать на многих страницах вашего сайта, вы можете использовать тег include .

{% include footer.html %}

Jekyll ищет все подключаемые файлы в подкаталоге _includes корневого каталога. Например, код в примере выше подключал файл <source>/_includes/footer.html.

Совет: используйте переменные в качестве имени файла

Имя подключаемого файла может быть как обычным символьным, так и заданным в переменной, при этом используется синтаксис для переменных — {% include {{my_variable}} %}.

Вы также можете передавать параметры подключаемому фрагменту:

{% include footer.html param="value" %}

Эти параметры доступны в фрагменте с помощью тега Liquid:

{{ include.param }}

Подключение файлов по относительному пути

Вы также можете подключить фрагмент к файлу, указав относительный путь от места подключения:

{% include_relative somedir/footer.html %}

В данном случае вам не обязательно держать подключаемый фрагмент в каталоге _includes, но нужно точно определять путь из текущего файла. Например, если _posts/2014-09-03-my-file.markdown использует тег include_relative, подключаемый файл должен быть внутри _posts или размещенного в нем подкаталога; файлы из других локаций подключить нельзя.

Все остальные возможности тега include, такие как использование переменных, полностью доступны в include_relative.

Подсветка фрагментов кода

В Jekyll благодаря Rouge реализована подсветка синтаксиса для более чем 60 языков. Это система подстветки кода по умолчанию в Jekyll 3 и выше. В Jekyll 2 для ее использования надо прописать это в конфигурации сайта, задав опции highlighter значение rouge.

В качестве альтернативы вы можете использовать для подсветки Pygments. Для этого вам надо установить Python, модуль pygments.rb и задать в конфигурационном файле опции highlighter значение pygments. Pygments поддерживает более чем 100 языков.

Для рендеринга фрагмента кода с подсветкой синтаксиса оберните его тегами как на примере:

{% highlight ruby %}
def foo
  puts 'foo'
end
{% endhighlight %}

Аргументом для тега highlight (в нашем примере это ruby) является идентификатор языка. Правильный идентификатор нужно искать в википедии Rouge или как “short name” в документации Pygments.

Нумерация строк

Это второй аргумент для highlightlinenos, он опционален. Включение linenos задает нумерацию строк в подсвечиваемом фрагменте. Например, в следующем блоке кода каждая строка будет пронумерована:

{% highlight ruby linenos %}
def foo
  puts 'foo'
end
{% endhighlight %}

Стили для подсветки синтаксиса

Для того, чтобы подсветка работала, вам надо подключить специальные стили для подсветки. Например, syntax.css — эти стили использует GitHub и они свободны для использования на любом другом сайте. Если вы нумеруете строки с linenos, вам надо задать специальный класс .lineno, чтобы отделить номера строк от подсвечиваемого кода.

Тег post_url

Если вы хотите подключить ссылку на пост, тег post_url сгенерирует правильную постоянную ссылку на нужный вам пост:

{% post_url 2010-07-21-name-of-post %}

Если вы группирует посты по подкаталогам, вам надо включить в путь подкаталог:

{% post_url /subdir/2010-07-21-name-of-post %}

Расширение файла при использовании post_url указывать не надо.

Вы также можете использовать этот тег для создания ссылок в разметке Markdown:

[Name of Link]({% post_url 2010-07-21-name-of-post %})

Gist

Вы можете использовать тег gist для подключения гистов с GitHub, он работает с публичными и секретными гистами:

{% gist parkr/931c1c8d465a04042403 %}

Вы можете опционально указать для отображения название гиста:

{% gist parkr/931c1c8d465a04042403 jekyll-private-gist.markdown %}