MaxSite.org 11 лет
Блог вебмастера о сайтостроении
Внимание! Данная запись отмечена как устаревшая и может содержать неточную или неактуальную информацию!

Подключение сторонних сервисов комментариев к сайту на MaxSite CMS

MaxSite CMS / Общие вопросыПросмотров: 18601 (261)

Для себя я провёл небольшой эксперимент по использованию стороних сервисов комментариев для своего сайта. Следует, правда учитывать, что комментарии я подключал как дополнительную функцию, не отключая обычные. То есть у посетителя был выбор: использовать ли стандартные MaxSite CMS комментирование или воспользоваться сторонним сервисом. Всего тестировал три сервиса: комментарии от facebook.com, intensedebate.com и disqus.com. Вначале кратко об их особенностях.

Комментарии от фейсбука вообще не пригодны для использования, хотя именно на них я возлагал больше всего надежд. Главная проблема этой системы - напрочь отстутствующая система модерации для владельца блога. Можно редактировать чужие комментарии, но такая необходимая вещь, как уведомление по email и режим премодерации отсутствуют как класс. В итоге пришлось отказаться.

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

Касаемо визуального отображения на сайте, то сервисы предоставляют минимальные настройки. Впрочем, при желании можно указать свои css-стили и поменять спорные по дизайну моменты. У intensedebate.com несколько больше выбор возможностей.

Все системы поддерживают вложенные комментарии, но мне они не нравятся, поэтому даже в режиме тестирования я уже начинал путаться какой ответ к какому комментарию относится. В плюс intensedebate.com следует отнести и то, что в нем можно отключить все эти «деревья».

И еще один момент в пользу intensedebate.com: в нем можно разрешить комментировать анонимам. В других системах требуется явно залогиниться или указать свой email. В этом плане intensedebate.com несколько ближе по идеологии к MaxSite CMS, где разрешены комментарии анонимов (без регистраций и email'ов).

Что же касается интеграции с соцсервисами, то они поддерживают твиттер, фейсбук и ряд других. Русские, вроде Контакта - нет.

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


После регистрации в системе комментирования будет предложено разместить js/html-код на страницах своего блога. Сейчас я покажу как это сделать, но перед этим следует определиться с тем, что делать с родными MaxSite CMS-комментариями. Важно понять, что комментарии разных систем не синхронизируются как между собой, так и с MaxSite CMS. Поэтому, если комментарий оставлен в дискусе, то его нельзя будет увидеть ни в «дебатах», ни в админ-панели MaxSite CMS.

В MaxSite CMS можно без проблем подключить любую систему, причем они все могут работать параллельно. Подключение же кода возможно двумя путями.

Первый - редактирование файла шаблона type/page-comments.php. Скорее всего этого файла нет в вашем шаблоне, поэтому просто копируем его из default/type в свой type-каталог.

Содержимое файла будет таким:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');?>
 
тут вы размещаете код сервиса

При данном способе вы полностью отключаете MaxSite CMS-комментарии и заменяете их выбранным сервисом.

Если же, по какой-то причине вы не хотите терять старые комментарии, то сторонний сервис можно подключить в файле type/page-comment-form.php. В нём содержится код формы для отправки комментария. Содержимое файла будет точно таким же как и page-comments.php (но его уже не трогаем).

В целом же подключение стороннего сервиса сводится к вставке кода сервиса в эти два файла.

Более простой случай, если вы не хотите отключать стандартные MaxSite CMS-комментарии. Для этого нам понадобится два плагина: Ушки и Ушки к хукам. Оба плагина водят в комплект системы, поэтому их искать не придётся.

Плагины Ушки и Ушки к хукам

Далее так. Делаем ушку с типом HTML и вставляем в неё код сервиса. Далее в опциях Ушки к хукам пишем:

Настройка хуков и ушек

В данном примере есть ушка intensedebate и мы её прописываем к хуку content_end, который срабатывает после текста записи. Число «20» указывает приоритет хука - вы его подберете экспериментально.

Дальше все будет работать автоматом.

Теперь что касается кода, который отдают сервисы. Во всех случаях этот код придется немного подкорректировать. Например для фейсбука следует явно указать адрес страницы, иначе коментарии будет одинаковыми для всех страниц сайта. Для дискуса нужно указать свой идентификатор. Только Intensedebate даёт уже полностью готовый код.

Если вы добавляете код через ушку, то следует учитывать, что на некоторых страницах следует запретить отображение комментариев - эта опция задаётся при редактировании записи. Также следует запретить комментирование для типов не равных «page», иначе комментарии появятся на главной, в рубриках и других типах данных.

Вот готовые коды для вставки в ушки (напоминаю, что тип ушки «TEXT/HTML»!):


Фейсбук-комментарии

if (!is_type('page')) return $args;
 
global $page;
if ( !$page['page_comment_allow'] ) return $args;
 
$href = urlencode(mso_current_url(true));
  
echo <<<EOF
  
<h3 style="background: #325C99; color: white; padding: 5px; margin: 10px 0;">Комментарии через facebook.com</h3>
 
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
 
<div class="fb-comments" data-href="{$href}" data-num-posts="5" data-width="670"></div>
 
EOF;

Код стандартный, но в него нужно добавить адрес текущей страницы (переменная $href). Также я немного по своему указал размеры и добавил заголовок «Комментарии через facebook.com». На своем сайте вы подберёте другие значения цветов и размеров.


Intensedebate-комментарии

if (!is_type('page')) return $args;
 
global $page;
if (!$page['page_comment_allow'] ) return $args;
 
echo <<<EOF
 
<script>
var idcomments_acct = 'тут ваш id аккаунта';
var idcomments_post_id;
var idcomments_post_url;
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='http://www.intensedebate.com/js/genericCommentWrapperV2.js'></script>
 
EOF;

Тут меньше всего телодвижений - нужно только указать номер своего аккаунта («IntenseDebate site acct»). Посмотреть его можно по ссылке View Site Key.

Ключ IntenseDebate site acct


Disqus-комментарии

if (!is_type('page')) return $args;
 
global $page;
if (!$page['page_comment_allow'] ) return $args;
 
echo <<<EOF
 
<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'тут имя сайта'; // required: replace example with your forum shortname
 
    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Включие JavaScript, чтобы оставить комментарий!</noscript>
 
EOF;

Здесь главное указать имя своего сайта. Оно выводится в скобках возле каждого вашего сайта.

Имя сайта в дискусе


Данный php-код подходит как для ушек, так и для файлов page-comments.php или page-comment-form.php.

Комментариев: 11 RSS

1Александр Шиллинг15-10-2011 00:25

Спасибо за инструкцию. Я тоже пробовал все три сервиса, но мой выбор пал на Cackle. Хоть и молодой и сыроватый виждет, но поддерживает: Google, Вконтакте, Facebook, Twitter, Яндекс и MyOpenID и администраторы довольно общительные.

2MAX15-10-2011 08:44

Да, но он тоже не позволяет комментировать анонимно. ;-)

5MAX18-10-2011 15:59

Честно говоря, я не совсем понимаю смыла в этом какле :smirk: Ну пусть возьмут за основу тот же intensedebate и сделают аналогичный функционал. А так непонятно в чём же его преимущество...

6Евгений Серебряков28-10-2011 13:09

Посмотрел cackle, понравилось, что "дружелюбный интерфейс" - сразу видно все иконки и понятно, что нужно в одну из них "тыкнуть". А, к примеру, кнопку или надпись "Авторизация: loginza" не каждый посетитель захочет кликнуть (меня спрашивали устно, что это такое, но так никто и не решился авторизоваться, в лучшем случае комментируют анонимно).

И, что плохо, в loginza нет тех соцсетей, где сейчас в основном "тусуется" народ: livejournal, vkontakte, odnoklassniki и прочие :(

7Садовник07-01-2012 17:17

В intensedebate.com нет русскоязычных социалок, где все посетители сайта зарегистрированы - поэтому в нем нет смысла.

11Алексей06-06-2013 18:11

На сайте cackle нет бесплатного пакета, только демо. Где Вы его нашли?

Оставьте комментарий!

Комментарий будет опубликован после проверки. Вы соглашаетесь с правилами сайта.

(обязательно)

О сайте

Здесь вы получите самую полную информацию о создании сайтов на MaxSite CMS.