Шаблоны
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.
Нумерация строк
Это второй аргумент для highlight
— linenos
, он опционален. Включение 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 %}