dimayakovlev.ru


Плагин Blackhole для Grav CMS

Barry Mode обновил свой плагин Blackhole для Grav до версии 1.0.0 beta 3. Для тех, кто не знает, плагин Blackhole создаёт статическую версию веб-сайта, работающего на Grav. По крайней мере, должен создавать, потому что предыдущие версии плагина с этим не справлялись, хотя, сам плагин всё это время находился в официальном репозиторий Grav. Так как я поддерживаю идею генератора статических сайтов на основе Grav, я был просто обязан проверить, можно ли пользоваться плагином после его обновления.

Причём, ранее я уже рассматривал плагин Static Generator, решающий ту же самую задачу - получение статической копии веб-сайта из Grav, и не был удовлетворён его работой.

Статическая версия веб-сайта создаётся плагином Blackhole через консоль при вызове команды плагина generate или g:

php bin/plugin blackhole generate http://localhost/grav

Для управления результатом команда generate принимает следующие параметры:

  • URL исходного веб-сайта на Grav. Например, адрес хоста на локальном веб-сервере;
  • --output-url, -d - целевой URL для статической версии веб-сайта;
  • --output-path, -p - путь для сохранения статической копии веб-сайта относительно корневой директории Grav;
  • --routes, -r - маршруты для создания статических копий разделов или страниц веб-сайта;
  • --simultaneous, -s - количество одновременно обрабатываемых страниц. Значение по умолчанию равно 10;
  • --assets, -a - копирование CSS, JS, файлов изображений и других подключаемых к страницам объектов в --output-path;
  • --force, -f - перазапись существующих файлов в --output-path;
  • --verbose-mode - вывод в консоль информации о прогрессе создания статической копии веб-сайта.

Например, если локальная версия веб-сайта доступна по адресу http://localhost:8080/, а статическая версия должна будет работать на http://dimayakovlev.ru/ и планируется сохранить её в директории <Grav root>/user/static-website/, то команда будет иметь следующий вид:

php bin/plugin blackhole generate http://localhost:8080/ --output-url http://dimayakovlev.ru/ --output-path /user/static-website/

В результате, в директории /user/static-website/ создана структура директорий, соответствующая структуре веб-сайта, хранящая в себе статические копии страниц в виде файлов index.html. С этим плагин Blackhole справился, я даже начал думать, что теперь в свободном доступе появился полностью работающий способ использовать Grav как генератор статических сайтов. Однако, это оказалось не так.

php bin/plugin blackhole generate http://localhost:8080/ --output-url http://dimayakovlev.ru/ --output-path /user/static-website/ --assets

При добавлении параметра --assets, подключаемые объекты не копируются по пути, определённом в параметре --output-path. Вместо этого плагин пытается создать структуру директорий вида: <output-path><URI scheme>//<URI host>:<URI protocol>/<path-to-assets>.

php bin/plugin blackhole generate http://localhost:8080/ --output-url http://dimayakovlev.ru/ --output-path /user/static-website/ --routes test

При добавлении параметра --routes плагин перестаёт работать, выводя ошибку в RollingCurl.php.

Без сомнения, плагин Blackhole имеет потенциал в превращении Grav в генератор статических сайтов, но в его текущей версии это не возможно - приведённых ошибок достаточно, чтобы признать плагин неработоспособным. Продолжать тестирование других сценариев работы Grav с плагином Blackhole я не стал. Предлагаю всем, кто заинтересован в получении удобного генератора статических сайтов на основе Grav, следить за обновлением плагина, выполнять тесты и сообщать разработчику в репозитории на GitHub обо всех найденных ошибках.

И напоследок ещё один нюанс работы плагина Blackhole для тех, кому достаточно простого создания статических копий страниц, с чем плагин справляется - если в контенте страницы используется текст, содержащий строку с URL, совпадающим с исходным URL веб-сайта на Grav, например, это может быть фрагмент кода, пример команды и т.д., то этот URL всё равно будет заменён на тот, что указан в параметре --output-url. Следите за этим.