Пришло время завершить цикл постов о переезде этого блога на статический движок.
Я уже успел рассказать о переносе самих постов и о
манипуляциях со структурой адресов. Последняя оставшаяся не освещенной тема —
перенос комментариев. За 6 лет существования блога их накопилось немало, и было
бы обидно от них отказаться.
Так как
Acrylamid
— полностью статический движок, его средств недостаточно для обеспечения
комментирования на блоге, и у меня возник выбор: либо использовать сторонние
сервисы, либо поднять на своем сервере собственное решение (например,
ISSO от того же разработчика). Взвесив все
альтернативы, я понял, что совершенно не хочу заморачиваться с собственным
решением и, по крайней мере поначалу, воспользуюсь услугами стороннего сервиса.
Исследование показало, что хороших вариантов не так уж и много, и Disqus из них
кажется самым удобным. Но, что самое важное, он позволяет импортировать и
экспортировать комментарии в достаточно простом формате. Это обеспечивало мне
возможность в любой момент сменить его на любой аналог, лишь поколдовав над
конвертацией дампа комментариев.
Впрочем, есть и негативные моменты, которые скорее всего вынудят меня однажды
пойти искать другую платформу. Первый среди них — тяжеловесность клиентского JS
даже в сжатом виде — около 700 КБ. Это гораздо больше, чем мне хотелось бы.
Теперь дело было за малым — сгенерировать дамп для импорта в Disqus. Конечно,
для Drupal существует модуль, позволяющий импортировать все комментарии в
Disqus, но он не мог ничего знать про новую структуру адресов постов, и, стало
быть, после смены движка снова стал бы бесполезен. Так что я пошел по уже
проторенному пути, и стал писать свой экспорт комментариев из Drupal. К счастью,
Disqus
умеет импортировать
комменты в формате WXR (родной формат экспорта Wordpress), который представляет
собой достаточно простой XML.
Достать комментарии из базы Drupal было проще простого:
SELECT cid, pid, nid, comment, hostname, timestamp, name, mail, homepage
FROM drupal_comments
WHERE status = 0
Сохранить его в нужном формате
почти так же просто,
если использовать модуль питона lxml. Единственная тонкость — указывая ссылку на
пост, по которой Disqus потом определит принадлежность комментариев, нужно
указывать новый адрес поста, консультируясь с картой перенаправлений, полученной
на [предыдущем этапе](/2014/Changing URL structure for Acrylamid.html).
Дальнейшие шаги хорошо документированы на
справочном сайте Disqus:
- Добавление сайта в систему.
- Импорт файла с комментариями (обычно занимает минут 5).
- Установка кода на сам блог.
На этом, пожалуй, все, что касается переезда. Надеюсь, кому-то это пригодится
:-)