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