Шаблоны
В качестве движка шаблонов Jekyll использует Liquid. Все стандартные фильтры и теги доступны. Помимо этого, Jekyll предостовляет собственные фильтры и теги для Liquid.
Фильтры
relative_url
- преобразует ссылку в полную, но без хоста.
{{ "/assets/style.css" | relative_url }}
/my-baseurl/assets/style.css
absolute_url
- преобразует ссылку в полную с хостом.
{{ "/assets/style.css" | absolute_url }}
https://www.site.com/my-baseurl/assets/style.css
date_to_xmlschema
- преобразует дату в ISO-8601 формат.
{{ site.time | date_to_xmlschema }}
2008-11-07T13:07:54-08:00
date_to_rfc822
- преобразует дату в RFC-822 формат.
{{ 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_exp
- выбирает все объекты из массива, в которых выполняется булевое условие.
{{ 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"=>[...]}]
group_by_exp
- группирует массив объектов по указанному условию.
{{ site.members | group_by_exp:"item",
"item.graduation_year | truncate: 3, \"\"" }}
[{"name"=>"201...", "items"=>[...]},
{"name"=>"200...", "items"=>[...]}]
xml_escape
- экранирует текст для XML.
{{ page.content | xml_escape }}
cgi_escape
- экранирует текст для использования в URL.
{{ "foo, bar; baz?" | cgi_escape }}
foo%2C+bar%3B+baz%3F
uri_escape
- экранирует текст для использования в URL.
{{ "http://foo.com/?q=foo, \bar?" | uri_escape }}
http://foo.com/?q=foo,%20%5Cbar?
number_of_words
- считает количество слов.
{{ page.content | nuber_of_words }}
1337
array_to_sentence_string
- преобразует массив в предложение.
{{ page.tags | array_to_sentence_string }}
foo, bar, and baz
{{ page.tags | array_to_sentence_string: 'or' }}
foo, bar, or baz
markdownify
- конвертирует HTML в MD.
{{ page.excerpt | markdownify }}
smartify
- конвертирует кавычки.
{{ page.title | smartify }}
scssify
- собирает CSS.
{{ some_scss | scssify }} {{ some_sass | sassify }}
slugify
- преобразует строку.
{{ "The _config.yml file" | slugify }}
the-config-yml-file
{{ "The _config.yml file" | slugify: 'pretty' }}
the-_config.yml-file
jsonify
- конвертирует массив в JSON.
{{ site.data.projects | jsonify }}
normalize_whitespace
- все пробелы приводит к единому типу.
{{ "a \n b" | normalize_whitespace }}
sort
- сортирует массив.
{{ page.tags | sort }}
{{ site.posts | sort: 'author' }}
{{ site.pages | sort: 'title', 'last' }}
sample
- выбирает одно или несколько случайных значений из массива.
{{ site.pages | sample }}
{{ site.pages | sample:2 }}
to_integer
- приводит строку к числу.
{{ some_var | to_integer }}
- Функции для работы с массивом. Не изменяет массив.
{{ page.tags | push: 'Spokane' }}
['Seattle', 'Tacoma', 'Spokane']
{{ page.tags | pop }}
['Seattle']
{{ page.tags | shift }}
['Tacoma']
{{ page.tags | unshift: "Olympia" }}
['Olympia', 'Seattle', 'Tacoma']
inspect
- конфертирует объект в строку для дебага.
{{ some_var | inspect }}
Теги
Вставки
Иногда бывает необходимость переиспользовать некоторый код в разных местах. Как уже говорилось, такие части должны находится в директории _includes
.
Чтобы импортировать такой элемент используется liquid-тег include
.
{% include header.html %}
Подсветка синтаксиса
Jekyll 3 использует встроенную подсветку синтаксиса с помощью Rouge. Сейчас поддерживается 130 языков.
Для более низкой версии Jekyll нужно дополнительно установить Rouge и установить значение highlighter: rouge
в _config.yml
.
Можно использовать подсветку синтаксиса языков с помощью Pygments. Для этого необходимо задать в конфигурации highlighter: pygments
, предварительно установив:
gem install pygments.rb.
echo "gem 'pygments.rb'" >> Gemfile
При использовании подсветки можно передать два аргумента - первый имя языка, а второй - отображение номера строки
{% highlight ruby linenos %}
def foo
puts 'foo'
end
{% endhighlight %}
Ссылки
Тег link
позволяет генерировать валидную ссылку на необходимы ресурс. К сожалению, эта ссылка не будет иметь baseurl
.
{{ site.baseurl }}{% link _collection/name-of-document.md %}
{{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}
{{ site.baseurl }}{% link news/index.html %}
{{ site.baseurl }}{% link /assets/files/doc.pdf %}
Несколько важных замечаний
- Если ссылка будет невалидной, то Jekyll не соберет сайт.
- Нельзя использовать liquid-фильтры на ссылках.
- Чтобы создать ссылку на пост можно воспользоваться фильтром
post_url
{{ site.baseurl }}{% post_url YEAR-MO-DA-name-of-post %}