Ваше местоположение в сети:
Рубрика:

Системы комментариев

Разделы сайта:

Прошу прощения у читателей за большой перерыв в публикациях. Связано это было даже не с моей ленью (у меня как раз образовался запас статей, которые я буду выкладывать), а со сменой системы комментариев. Дело в том, что когда я делал этот сайт, я использовал для авторизации систему Google Friend Connect. Сейчас же Google закрыл этот сервис, как и многие другие (печально известно, например, грядущее закрытие Google Reader).

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

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

Блоги

Сейчас, когда человек начинает вести блог, он чаще всего использует какой-нибудь готовый сервис типа живого журнала. Если же хочется большего, то покупается свой домен, и сайт делается на нем, при этом обычно используется какая-нибудь CMS типа WordPress. Подобные системы позволяют хозяину сайта достаточно легко размещать статьи, а также они имеют встроенные системы комментариев - ответов на записи.

Как водится, я пошел своим путем и не использовал никакие CMS или системы комментариев. С одной стороны, мне хотелось разобраться в программировании на php, с другой, я просто не знал на тот момент о существовании CMS. Однако, сделанный руками сайт имеет свои преимущества - он грузится гораздо быстрее и дает меньшую нагрузку на сервер.

И если с выводом статей все обстояло достаточно просто, то сделать удобную систему комментирования было не совсем тривиально. Дело в том, что комментарии было нужно как-то хранить, а также, желательно, позволять пользователям авторизовываться на сайте. Я прекрасно понимал, что на тот момент никто не был готов специально регистрироваться на моем блоге, поэтому искал системы сторонней авторизации. Сначала мне приглянулась идея с OpenID, но потом я понял, что несмотря на хорошую идею, этот протокол мало кому стал известен (кстати, стоит отметить, что Google также сначала финансировал развитие OpenID, а потом забросил проект). И тогда я нашел систему Google Friend Connect и остановился на ней. Она позволяла авторизовываться аккаунтом Google или каким-либо иным, оставлять комментарий от своего имени. А сейчас этот проект закрыт.

Комментарии
comments system

В поисках новой системы авторизации я нашел то, что называется системами комментариев. Идея заключается в том, что ваши комментарии вообще хранятся не на вашем сайте, а на сайте соответствующей системы. А когда открыта страница блога, комментарии подгружаются скриптом (javascript).

В чем преимущество такого подхода? В том, что вам больше не нужно думать об авторизации на вашем сайте, пользователь использует свои аккаунты в различных сервисах, набор провайдеров также предоставляется системой комментирования. Кроме того, такие комментарии зачастую лучше работают, чем встроенные комментарии в какую-нибудь CMS. Если вы посмотрите на мою Убунтологию, то увидите, что там работает внешняя система комментирования.

Из известных систем мне понравилось две, зарубежная disqus и наша cackle. Последняя мне приглянулась больше, и я решил остановиться на ней.

Экспорт в систему

Если на вашем блоге есть уже множество комментариев, то вы, конечно, не хотите их терять с переходом на новую систему комментирования. Эта проблема решается. Во-первых, если вы, допустим, используете Wordpress, то соответствующий плагин автоматически загрузит ваши комментарии в систему. В случае же самодельных сайтов тоже есть решение. У disqus был описан формат, в котором надо подготовить свои комментарии для загрузку в систему. Система cackle пока на это была не рассчитана, но я связался с разработчиками, и они охотно согласились загрузить мой файл.

Импорт из системы

Чего я боялся, когда думал о системах комментирования, так это потери контроля за своими комментариями. А что если сервис начнет закрываться, а комментарии хранятся только у них. Неужели я их все потеряю? Кроме того, в моих комментариях содержалось достаточно много полезной информации, и мне хотелось, чтобы она была проиндексирована. А, как известно, поисковые системы не выполняют полноценные скрипты, поэтому они не увидят эти комментарии, если они будут грузиться только скриптом. Как оказалось, имелось решение.

Идея мне была подсказана в rss-ленте блога TheXNews, которую я регулярно читаю. Этот блог не так давно был сделан статическим, но проблема с комментариями так же оставалась. Автор блога, Дима, использовал в качестве системы комментирования disqus, но при этом сделал так, что комментарии также и сохраняются на блоге и выводятся даже если у пользователя не работают скрипты. Также он охотно дал мне пояснения о том, как работает эта схема.

Поскольку я выбрал cackle, я не смог напрямую воспользоваться его наработками, но там также имелось решение, предложенное разработчиками проекта в статье на хабре. Поскольку эта статья уже достаточно затянулась, опишу кратко, как работает эта схема. Во-первых, я заготавливаю базу данных, в которой теперь хранятся мои комментарии. Регулярно выполняется скрипт, который использует API и скачивает новые комментарии из cackle и дописывает их в эту базу. Теперь при открытии страницы блога выполняется следующее:

  • При формировании страницы (на php) комментарии берутся из базы и выводятся на страницу.
  • Если у пользователя отключены скрипты (или это робот), то он видит комментарии и надпись, что чтобы оставить комментарий, необходимо включить скрипты.
  • Если же скрипт в конце загрузки срабатывает, то он прячет блок комментариев и замещает его комментариями, загруженными из cackle. По сути, это те же самые комментарии, только уже полноценно сформированные, стилизованные, с возможностью писать ответ.

Если кого-нибудь интерисуют коды и детали реализации (у меня возникли некоторые проблемы, которые я не предвидел, прочитав ту статью на хабре), то пишите комментарии, я готов поделиться решением. Возможно, даже сам буду на хабре писать об этом. Также просто призываю протестировать новую систему комментариев!

← Где находится человек?Дополненная реальность →
comments powered by Disqus