Антон Рябов bio photo

Антон Рябов

Не люблю бриться и у меня умный взгляд.

Email Twitter Telegram Github PGP RSS

И снова про Ghost




UPD1: Ghost я больше не использую, запись сохранена для истории, про устройство блога написал в отдельной статье.
UPD2: nginxtips.ru - когда-то я пробовал сделать отдельный сайт с советами по Nginx, но потом вернул все статьи в блог.

Обзор

Синапсис

Я уже писал, о том, как установить Ghost на собственный сервер. Кстати, блог, который в данный момент работает на данной cms, успешно переехал на последнюю стабильную версию по официальному мануалу.  Собственно, как только я узнал про данную систему, сразу подумал о том, чтобы перевести свой ламповый doam.ru на нее. Однако сразу же возникла куча вопросов, и ответы на них не были получены. После обновления призрака, я вновь задумался о переезде. И сегодня приступил к первому этапу.

Подготовка

На самом деле, этот этап можно назвать «подготовка подготовки». Для тестирования я взял контейнер работающего nginxtips.ru и сделал его дубликат, а также удалил все статьи и сменил тему на дефолтную (всегда предпочитаю отталкиваться от дефолтной темы любой cms). Далее был инициирован процесс гугления темы «как переехать с Wordpress на Ghost». Естественно, процесс этот шел на английском языке, так как материала на тему призрака в принципе мало в рунете, тем более нет и того что мне нужно. Первым делом была закреплена данная статья.

Ограничение на импорт

У Ghost есть замечательный экспорт/импорт статей, который располагается по адресу youghost.net/ghost/debug/ и выглядит следующим образом:

К сожалению, скриншот был утерян.

Однако на импорт существует странное ограничение в 150 символов. Символов чего я так и не понял. Но суть в том, что если двигаться по мануалу который я закрепил ранее, то мы упираемся в ошибку, мол «слишком много, не могу переварить». Продолжение гугления привело меня к статье. И тут возник некоторый ступор, потому что, как запустить данный скрипт я и не понял.

var fs = require(fs);
var filePath = process.argv[2];

var content = null;

fs.readFile(filePath, utf8, function (err, data) {
if (err) {
console.log(Error:  + err);
return;
}

//Sometimes the shortning causes duplicte sluglines, which are forbidden. So the map is here to handle it.
var slugsMap = {};

content = JSON.parse(data);
var posts = content.data.posts;
posts.forEach(function (post) {
if (post.slug.length > 150) {
post.slug = post.slug.substring(0, 149);

if (slugsMap[post.slug]) {
console.log(«Found duplicate: » + post.slug);
slugsMap[post.slug]++
post.slug = (slugsMap[post.slug] + post.slug).substring(0, 149);
console.log(«Changed to: » + post.slug);
} else {
slugsMap[post.slug] = 1;
}
}
});

var outputFile = «./parsed_slugline.json»;
fs.writeFile(outputFile, JSON.stringify(content), function (err) {
if (err) {
console.log(err);
} else {
console.log(«File was saved to » + __dirname + «/» + outputFile);
}
})
});

А комментарий автора:

Run the script on the json file you exported from wordpress, and use the new output when importing to Ghost.

Не особо помог. В результате логического размышления, я додумался, что нужно сделать.

  1. Залить скрипт на сервер, на котором у нас запущен блог, или на котором установлен node.js.
  2. Туда же залить файл экспорта с постами из Wordress.
  3. Выполнить данный скрипт командой node slugline_shortner.js export_posts_from_wp.json
  4. Полученный файл импортировать в наш Ghost через уже известное меню дебага.

И о чудо, все посты из wp теперь у нас в блоге на призраке, но тут я понял, что изображения ссылаются на работающий блог на вордпресе, т.е. если его выключить, картинок в госте не будет.

Изображения

Закрепленный мануал приходит на выручку. В нем предлагается использовать для изображений некий ресурс cloudinary.com. Собственно, выполняя все действия по инструкции, я вновь получил файл экспорта постов, но теперь уже c изображениями, которые хранятся на удаленном сервере. Это, на мой взгляд, неправильно, но для тестирования подходит. Уже набив руку на импорте, я провожу необходимые операции и … получаю дубли всех постов, но теперь с правильными картинками. Недолго думая, я удаляю все посты, что позволяют сделать встроенные средства призрака на странице дебага и заново заливаю тот же файл.

Комментарии

Итак, по сути все готово к выводу блога на новом движке в паблик:

  • Посты перенесены
  • Картинки отображаются
  • Комментарии … стоп, комментариев как раз нет.

О боже, потеряю все комментарии к своим статьям (10 шт или вроде того) – так не подумал я. Можно с легкостью перенести комментарии вконтакте на новый движок, но тут есть минус. Дело в том, что использование комментариев вконтакте, меня не совсем устраивает. Невозможно переопределить css, спам и другие мелочи. Это как раз один из барьеров в вопросе переезда doam.ru на Ghost. Тут работает дело принципа, потому что, систему комментариев придется менять на disqus, к которому я, пока, не привык.

Тема

В обновленном Ghost, нас ждет, и новая дефолтная тема casper. Теперь она имеет фулскриновую шапку и маленькие приятные мелочи. Однако ей стоит дать название very simple. Так как функциональность, которую она дает, очень мала. Посмотрев на marketplace призрака, я понял, что тему (опять) придется допиливать самому. На данный момент, тестовый doam.ru на Ghost выглядит как в заголовке, а посты так:

К сожалению, скриншот был утерян.

Круто, но недостаточно.

Итог

В результате, я только начал тестирование и пока не готов к переезду на этот столь интересный движок. Остаются открытыми ряд жизненно важных вопросов, и это не только внешний вид и комментарии, но и юзабилити, аналитика, функциональность и др. Однако, я надеюсь, что в ближайшее время смогу решить все поставленные задачи и ламповый doam.ru, предстанет перед всей мировой паутиной обновленный, быстрый, удобный и интересный.

P.S. В тексте указано, что хранить изображения на удаленном это плохо. Я так считаю, и поэтому вместе с переездом, придется думать и над хранением изображений на собственном ресурсе, к которому будут иметь доступ только мои сервисы.

#Ghost #CMS #TechAndDev