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. Следите за этим.