Плагин подключения комментариев на любые страницы сайта на MaxSite CMS
Плагин подключения комментариев на любые страницы сайта на MaxSite CMS
Плагин позволяет подключать комментарии для страниц сайта вида siteurl/seg1/seg2.
Протестировать можно тут: Страница фотогалереи.
Для хранения комментариев создается своя таблица. Коментарии ко всем сущностям, которые взбредет в голову комментировать, хранятся в этой таблицк.
Новые понятия
Комментируемая Сущность (element), определяемая по seg2. Для каждой страницы сайта siteurl/seg1/seg2 с зарегистрированным seg1 создается в таблице сущностей запись для сущности со слугом seg2.
Вид сущности (kind), который определяется seg1. Для того, чтобы комментарии заработали на странице siteurl/seg1/seg2, нужно зарегистрировать в админке вид сущностей со слугом seg1.
Особенности плагина
Комментарии хранятся в новой таблице other_comments.
Привязка комментариев происходит либо по имени таблицы и номеру сущности в этой таблице.
Поясню на примере фотографий, которые хранятся в таблице "pictures" и имеют в этой таблицу picture_id.
Тогда комментарии в требуемом месте шаблонных файлов подключаются строчкой кода.
- global $MSO;
- if (in_array('other_comments', $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); // если есть, подключаем
- }
Если же сущности не имеют своих таблиц, а формируются на лету или из массивов, то связь осуществляется по паре сегментов url-а mso_segment(1) , mso_segment(2).
Например: siteurl/pictures/flowers_jpg
В этом случае mso_segment(1) (pictures) будет считаться именем вида сущности kinds, а mso_segment(2) (flowers_jpg) - слугом самой сущности.
Для начала нужно зарегистрировать в админке плагина сегмент вида сущности для которых будут комментарии.
Тогда подключение комментариев будет осуществляться так (передавать сегменты адреса не нужно - их определит функция):
- global $MSO;
- if (in_array('other_comments', $MSO->active_plugins) )
- {
- $element = array(
- 'title' => $picture['picture_title']
- );
- $fn_comments = getinfo('plugins_dir') . $options['comments_plugin'] . '/other_comments.php'; // путь
- if ( file_exists($fn_comments) ) require($fn_comments); // если есть, подключаем
- }
Актуальность title в таблице сущностей поддерживается автоматически.
Размещаем код в нужном месте и регистрируем вид сущности.
Запись о сущности добавляется в момент первого посещения комментируемой страницы сайта.
При удалении записи о сущности все ее комментарии удаляются.
При деинсталяции плагина все таблицы удаляются.
Скачать: other_comments2.zip
Очень помогло при создании плагина то, что аналогичное уже делалось тут: Плагин Фотки. По сути, я взял тот плагин и удалил весь функционал для фоток.
Проблемы
После добавления комментария анонимом этот комментарий не отображается. Это связанно с тем что if (isset($MSO->data['session']['other_comments'])) возвращает false. Пока не решил.
TODO
Создание альтернативных функций mso_email_message_new_comment, mso_comuser_update_count_comment и т. д.
Создание виджетов последних комментариев, топ комментаторов и самого комментируемого с учетом новой таблицы комментариев.
Создание шаблонного файла comments, в котором вывод будет учитывать новую таблицу комментариев.
Плагин водных меток на загруженные ранее картинки Add_Water для MaxSite CMS
Теперь этот функционал удобнее юзать в плагине галерей taggallery20 Так ...
Плагин Similar Posts для Max Site CMS
Похожие страницы выводятся после контента просматриваемой. В Max Site CMS ...
Вывод WOT - оценки ссылок для MaxSite.

Что такое WOT.mywot.com/ru - сервис, позволяющий формировать коллективную оценку ...
Плагин Кнопка скроллинга вверх для MaxSite CMS
Совсем маленький плаги scrolltopcontrol, помещающий в правом нижнем углу окна ...
Редактор CKeditor для MaxSite CMS

Сам Я, вообще то, не пользуюсь визуальными редакторами. Но этот показался ...











установил, попробовал, не понял как работает и что нужно делать...
Имеется два варианта работы плагина (от первого варианта избавлюсь в следующей версии)
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 - заголовок комментируемой страницы