Дима Яковлев

Плагин 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 принимает следующие параметры:

Например, если локальная версия веб-сайта доступна по адресу 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. Следите за этим.