Плагин подключения комментариев на любые страницы сайта на MaxSite CMS

Плагин подключения комментариев на любые страницы сайта на MaxSite CMS

14 октября 2011 г. Sadovnik Просмотров: 218 RSS
Разные плагины , ,

Плагин позволяет подключать комментарии для страниц сайта вида siteurl/seg1/seg2.

Плагин в стадии тестирования.

Протестировать можно тут: Страница фотогалереи.

Для хранения комментариев создается своя таблица. Коментарии ко всем сущностям, которые взбредет в голову комментировать, хранятся в этой таблицк.

Новые понятия

Комментируемая Сущность (element), определяемая по seg2. Для каждой страницы сайта siteurl/seg1/seg2 с зарегистрированным seg1 создается в таблице сущностей запись для сущности со слугом seg2.

Вид сущности (kind), который определяется seg1. Для того, чтобы комментарии заработали на странице siteurl/seg1/seg2, нужно зарегистрировать в админке вид сущностей со слугом seg1.

Особенности плагина

Комментарии хранятся в новой таблице other_comments.

Привязка комментариев происходит либо по имени таблицы и номеру сущности в этой таблице.

Поясню на примере фотографий, которые хранятся в таблице "pictures" и имеют в этой таблицу picture_id.

Тогда комментарии в требуемом месте шаблонных файлов подключаются строчкой кода.

  1.  global $MSO;
  2.   if (in_array('other_comments', $MSO->active_plugins) )
  3.   {
  4.   $element = array(
  5.   'element_id_in_table' => $picture['picture_id'],
  6.   'table_name' => 'pictures',
  7.   'title' => $picture['picture_title']
  8.   );
  9.   $fn_comments = getinfo('plugins_dir') . $options['comments_plugin'] . '/other_comments.php'; // путь
  10.   if ( file_exists($fn_comments) ) require($fn_comments); // если есть, подключаем
  11.   }

Если же сущности не имеют своих таблиц, а формируются на лету или из массивов, то связь осуществляется по паре сегментов url-а mso_segment(1) , mso_segment(2).

Например: siteurl/pictures/flowers_jpg

В этом случае mso_segment(1) (pictures) будет считаться именем вида сущности kinds, а mso_segment(2) (flowers_jpg) - слугом самой сущности.

Для начала нужно зарегистрировать в админке плагина сегмент вида сущности для которых будут комментарии.

Тогда подключение комментариев будет осуществляться так (передавать сегменты адреса не нужно - их определит функция):

  1.  global $MSO;
  2.   if (in_array('other_comments', $MSO->active_plugins) )
  3.   {
  4.   $element = array(
  5.   'title' => $picture['picture_title']
  6.   );
  7.   $fn_comments = getinfo('plugins_dir') . $options['comments_plugin'] . '/other_comments.php'; // путь
  8.   if ( file_exists($fn_comments) ) require($fn_comments); // если есть, подключаем
  9.   }

Актуальность title в таблице сущностей поддерживается автоматически.

Размещаем код в нужном месте и регистрируем вид сущности.

Запись о сущности добавляется в момент первого посещения комментируемой страницы сайта.

При удалении записи о сущности все ее комментарии удаляются.

При деинсталяции плагина все таблицы удаляются.

Скачать: other_comments2.zip

Очень помогло при создании плагина то, что аналогичное уже делалось тут: Плагин Фотки. По сути, я взял тот плагин и удалил весь функционал для фоток.

Проблемы

После добавления комментария анонимом этот комментарий не отображается. Это связанно с тем что if (isset($MSO->data['session']['other_comments'])) возвращает false. Пока не решил.

TODO

Создание альтернативных функций mso_email_message_new_comment, mso_comuser_update_count_comment и т. д.

Создание виджетов последних комментариев, топ комментаторов и самого комментируемого с учетом новой таблицы комментариев.

Создание шаблонного файла comments, в котором вывод будет учитывать новую таблицу комментариев.

Немного подправленная версия 2. ссылка на закачку соответственно изменена.
Похожие страницы
Комментариев: 2
  1. dignityinside (профиль) 17 января 2012 в 21:31:05 (ссылка)

    установил, попробовал, не понял как работает и что нужно делать... red face

  2. Sadovnik 18 января 2012 в 17:24:40 (ссылка)

    Имеется два варианта работы плагина (от первого варианта избавлюсь в следующей версии)

    1. Если новые сущности не хранятся в БД

    2. Если новые сущности хранятся в БД.

    Рассмотрим второй вариант.

    Вот, у меня в галерее изображений (taggallery23.zip) вывод картинки происходит в файле \templates\default\picture.php

    В этом файле такой кусок кода в конце, который подключает комментарии:

    // подключаем комментарии плагина other_comments
        if ($options['comments_plugin'])
        {
           // установлен ли плагин комментирования
           global $MSO;
           if (in_array($options['comments_plugin'], $MSO->active_plugins) ) 
           {   
              $element = array(
                 'element_id_in_table' => $picture['picture_id'],
                 'table_name' => 'pictures',
                 'title' => $picture['picture_title']
               );
              $fn_comments = getinfo('plugins_dir') . $options['comments_plugin'] . '/other_comments.php'; // путь
               if ( file_exists($fn_comments) ) require($fn_comments); // если есть, подключаем 
            }   
        }

    Где

    element_id_in_table - id картинки в таблице картинок

    table_name - имя таблицы, в которой хранится картинка

    title - заголовок комментируемой страницы

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

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

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

Авторизация: Авторизация MaxSite CMS. Facebook.

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

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