Статьи

Drupal 7 для Jekyll, эпическое путешествие

Существует недавняя тенденция в ведении блогов, которая заключается в отбрасывании PHP-платформ, таких как WordPress и Drupal, в коэффициент статических HTML-страниц, генерируемых при необходимости.

Статические блоги имеют много преимуществ перед PHP-движками:

  • Они намного быстрее, так как во время выполнения нет накладных расходов на компоновку визуализированной страницы
  • Там нет проблем безопасности в отношении SQL инъекций
  • Наконец, создание сайта устраняет необходимость в промежуточной области с возможно несовпадающими конфигурациями

morevaadin.com — один из моих сайтов, созданный с помощью дистрибутива Open Publish поверх Drupal 7. Он предназначен только для показа статей о фреймворке Vaadin: здесь нет управления комментариями, никакого взаимодействия, никаких причудливых вещей. По сути, нет необходимости в платформе Drupal, и несколько HTML-файлов с некоторым JavaScript будет более чем достаточно. Вот о моем путешествии по портированию существующего сайта, с различными шагами, которые я прошел, чтобы достичь своей цели (спойлер: на момент написания статьи это не увенчалось успехом).

Первый шаг

Не имея предыдущего опыта, я выбрал Jekyll в качестве целевой платформы, поскольку он поддерживается Github .

Прежде чем что-то делать, я прошел процесс создания виртуальной машины Ubuntu с пакетами Ruby и RubyGems.

sudo apt-get install ruby
sudo apt-get install rubygems

Миграция блога объяснила

Моя первая стратегия состояла в том, чтобы следовать инструкциям из этого поста в блоге , который, казалось, точно соответствовал моей цели. По сути, я должен был получить дамп SQL с моего сайта Drupal, выполнить его на локальной базе MySQL и выполнить какой-нибудь Ruby-скрипт, обертывающий SQL-скрипт.

Проблема в том, что предложенный сценарий SQL не был адаптирован к структуре моей базы: я исправил префиксы и типы узлов, но у меня все еще не было успеха при запуске сценария.

Другие скрипты

Я нашел другие сценарии в Интернете, но ни один из них не был адаптирован к структуре моей базы данных, и я не смог их запустить, несмотря на все мои усилия.

Эврика!

Возвращаясь к основам: учитывая, что ни один из созданных вручную сценариев не может быть запущен в моей базе данных, я решил заглянуть в документацию по Jekyll и обнаружил, что с мигратором Drupal 6.1 был обнаружен драгоценный камень.

Итак, я установил Jekyll — гем Ruby — и наконец смог запустить скрипт.

sudo gem install jekyll
ruby -rubygems -e 'require "jekyll/migrators/drupal"; Jekyll::Drupal.process($MYSQL_INSTANCE, $LOGIN, $PASSWORD)

На данный момент я не получил ошибок при запуске сценария Ruby, но не выводил вообще. Однако я /var/lib/gems/1.8/gems/jekyll-0.11.2/lib/jekyll/migrators/drupal.rbнемного подправил сценарий, где закомментировал строки, касающиеся узлов и типов сущностей (30-31), а также целые теги (строки 53-60 и 69), и наконец получил некоторые результаты: _draftsи _postsпапка с последней полной .mdфайлов!

Запуск Jekyll с jekyll --serverокончательно сгенерированной _siteпапкой с загрузкой страниц.

Проблемы

Есть некоторые проблемы с тем, что я получил:

  • Некоторые страницы имеют неразборчивые разделы ( REXML could not parse this HTML/XML)
  • Страницы не имеют расширений, несмотря на то, что они HTML, поэтому браузер не распознает тип MIME, когда они запускаются под Jekyll. Обычным способом было бы иметь index.html в папках, названных как пост
  • Там нет индекса

Клонирование Октопресс и Джекилл

Учитывая мои очень ограниченные знания (не читайте ничего) о том, что происходит под прикрытием, и мое нежелание вносить дальнейшие изменения в сценарий, я попробовал то же самое на готовом шаблоне Octopress с возможным намерением перенести несколько страниц, которые у меня были. (не очень удовлетворительно с точки зрения разработчика программного обеспечения, но достаточно прагматично для моих нужд).

sudo apt-get install git
git clone https://github.com/imathis/octopress

К сожалению, в скрипте произошла ошибка :-(Итак, в отчаянной попытке я хотел попробовать Jekyll Bootstrap.

git clone https://github.com/plusjade/jekyll-bootstrap.git

И вот, я наконец-то получил ошибку, вывод и что-то для просмотра в браузере по адресу http: /0.0.0.0/index.html !

Текущая ситуация

Я настраивал и обновлял включенные файлы (те, что находятся в папке _included), и я начинаю получать что-то похожее на оригинальный макет.

Чтобы получить это, я должен был установить Pygments, код для префтификации:

sudo apt-get install python-pygments

На данный момент, в основном, есть 2 варианта: либо вручную портировать другие сообщения и доработать макет (а также перейти к исходной теме), либо инвестировать в процесс настройки, чтобы он работал.

В настоящее время я склоняюсь к первому варианту. Обратная связь приветствуется!