Jekyll для создания и управления статичными сайтами

Если есть небольшой сайт, и на его хостинг не хочется тратить много денег и времени, то лучше его сделать статическим.
Если он состоит хотя бы из 5-7 страниц, то изменение меню или добавление текста в шапку превращается в очень болезненный процесс копи-пасты и тестов.

Тем не менее, есть решение.
Jekyll — библиотека для генерации статичных сайтов по шаблонам.
https://github.com/mojombo/jekyll/wiki — вики проекта.

В общем, всё достаточно просто — достаточно создать файл-лэйаут и на его основе создавать страницы. Поддерживаются переменные, причём как переменные общие для всего сайта (site.<имя переменной>), так и переменные, специфичные для страницы (page.<имя переменной>), которые доступны и в родительском шаблоне.
Пример лэйаута

Примеры страниц:
price.html

contacts.html

Далее запускаем генератор (или даже простенький сервер; по умолчанию — на 4000 порту).
В итоге всё, что написано между ——— (YAML Front Matter) становится переменными, доступными внутри шаблона и родительского шаблона. А всё после ——— становится доступно как значение переменной content.

Замеченные минусы:
Поддерживается только UTF-8 (хотя вряд ли это сейчас минус) и не поддерживается русский текст в переменных (обратите внимание на переменные title: entities — единственный способ, которым я заставил jekyll работать с русским языком в переменных)

В командной строке нужно сделать

Сайт доступен по адресу http://localhost:4000/.

Далее я настроил file watcher в PhpStorm для перегенерации страниц при изменении файлов. Вот какая конфигурация получилась в итоге (волею судеб _эту_ работу я делаю в Windows 7):
1379759706-clip-68kb

Вот статья, подробно рассказывающая, как создать простой сайт на jekyll — http://net.tutsplus.com/tutorials/other/building-static-sites-with-jekyll//

One Response so far.

  1. Vladimir:
    Спасибо. После добавления file watcher в PHPstorm (без указания scope) столкнулся с тем, что после изменения файлов многократно запускался процесс Jekyll. Проблема была в том, что после запуска процесса обновлялись файлы в папке с сгенерированными файлами, что вызывало повторный запуск Jekyll, и так далее рекурсивно)
    Вылечилось добавлением папки с получаемыми файлами в игнорируемые Phpstorm.

LEAVE A COMMENT