На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

Плагин Comments - древовидные комментарии

Плагины » Комментарии / 5 февраля 2016

Плагин древовидных комментариев для MaxSite CMS - Comments

Древовидные комментарии (их еще называют «вложенные комментарии») очень удобны, как для автора сайта, так и для его посетителей тем, что позволяют очень комфортно вести беседу - удобно оставлять отзывы, задавать вопросы и получать ответы на свои вопросы. Собственно поэтому древовидная организация вывода комментариев пользуются большой популярностью среди активно комментируемых сайтов/блогов. Родная система комментирования MaxSite CMS имеет плоскую структуру, но с помощью плагина Comments у вас появляется возможность быстро и без программирования внедрить на MaxSite CMS древовидные комментарии и тем самым повысить активность комментаторов на ваших сайтах.

Возможности плагина древовидного комментирования

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

  • отображать древовидные или «плоские» комментарии. Причём можно переключаться между вариантами отображения без риска порушить сайт или потерять «вложенность» комментариев.
  • ajax-добавление новых комментариев без перезагрузки страницы
  • включить простое голосование за комментарии и на основе собранных голосов выводить блок «Лучшие комментарии». При этом есть возможность выводить кнопку «Показать контекст», благодаря которой можно перейти к комментарию даже если если он выводится где-то на страницах пагинации
  • можно задавать максимальный уровень вложенности и максимальное количество отображаемых вложенных комментариев
  • использовать простой или аяксовый способ пагинации комментариев
  • гибко настраивать страницы пагинации - во избежание дублирования контента и мета полей (заголовков и описаний)
  • добавлять в файл sitemap.xml информацию о страницах пагинации комментариев
  • гибко настраивать верстку (система unit-шаблонов), css-оформление и используемый js-код (стандартный js-файл можно заменить на кастомный)
  • при наличии пагинации комментариев корректно переходить из админ-панели управления комментариями к месту размещения комментария на внешней части сайта

Демонстрация возможностей плагина

Вместо чтения тысячи восторженных слов лучше один раз увидеть плагин в деле. Для этого есть специальная страница на демо-сайте плагина ЧПУ - SEO дружественная URL структура для MaxSite CMS (ЧПУ)42.

Установка и настройка Comments

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

Страница опций выглядит примерно (в будущих версиях могут появится дополнительные опции) так:

Скриншот опций плагина Comments для MaxSite CMS

Благодаря подробным комментариям у полей и заданным значениями по-умолчанию вы легко сможете самостоятельно разобраться и настроить плагин на работу в нужном режиме.

Но опции плагина это только часть возможностей по настройке. Чтобы настроить стили оформления древовидных комментариев вам может потребоваться задать свои css-правила. Для этого в папке плагина есть файл _custom.css, в который можно разместить ваш css-код. Чтобы это файл начал подключаться на страницах записей вам нужно переименовать его в custom.css (т.е. убрать в имени знак подчеркивания).

В плагине по-умолчанию используются css-стили для default-шаблона MaxSite CMS. Заданы самые минимальные настройки чтобы плагин начал работать, но на боевом сайте возможно потребуется доопределить некоторые свойства. Имейте это в виду! Если вы захотите полностью переопределить оформление комментариев - сделайте это через файл custom.css или стили вашего шаблона, но не забудьте отключить опцию, которая заставляет плагин подключать файл default.css.

Для опытных вебмастеров может потребоваться изменить вёрстку комментариев. Это легко реализовать. Достаточно найти в папке плагина директорию /application/maxsite/plugins/comments/units/, в которой хранятся все используемые плагином шаблоны. Вам достаточно взять нужный файл (какой из них за что отвечает должно быть понятно из названия и комментариев, которые имеются в утри некоторых файлов), исправить соответствующим вашей задаче образом и разместить результат в папке /type/page/units/ вашего шаблона сайта. После этого плагин начнёт использовать ваш вариант файла. Ещё раз обращаю ваше внимание - не обязательно менять все файлы, достаточно создать кастомную версию только «проблемного» файла.

Если вёрстка была изменена довольно сильно и работа js-кода порушилась, то вам нужно воспользоваться возможностью задать свой рабочий вариант js-кода - поместите его в файл /application/maxsite/plugins/comments/jquery.comments.custom.js. В папке плагина есть для этого заготовка - _jquery.comments.custom.js.

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

Зависимости

  • Работа плагина в состоянии «из коробки» требует включения плагина tabs
  • Если вы используете плагин ЧПУ и пагинацию комментариев, то может потребоваться настроить в плагине ЧПУ опцию, которая отвечает за slug-признак пагинации комментариев

Скачать плагин древовидных комментариев

Автор: Илья Земсков

Текущая версия плагина: 2.9

Версия CMS: стабильно работает на 0.94. На 0.93 может потребоваться перенести unit-файл page-comments.php в папку шаблона. На более ранних версиях тестируйте самостоятельно - работать должно, но если будут проблемы, то дайте знать в комментариях, попробуем помочь.

comments_2_9.zip29

ToDo

На данный момент в списке возможных доработок такие пункты:

  1. Наладить совместную работу с виджетом последних комментариев
  2. Реализовать сохранение авторизационных данных в форме комментирования, чтобы посетителю не нужно было их повторно вводить

Благодарности и поддержка разработчику

Если вам понравился плагин древовидных комментариев для MaxSite CMS и вы внедрили его на свой сайт, то будет здорово, если вы отблагодарите автора за его труд. Сделать это можно разными способами. Все они описаны здесь.

Комментариев: 48
  1. Спасибо. Давно думал себе подобное реализовать, но все руки не доходили. Попробую, поюзаю. Отпишусь.wink

  2. Спасибо, использовал другой плагин, попробую этот! Как всегда супер smile

  3. Проверил, нет кнопочки ответить.. Древовидные да, кнопочки нет.. 0.86

  4. Выглядит привлекательно, вероятно попробую пересесть на него при замене движка на актуальный.

    Понравилась верстка формы комментирования. А аватарки справа немного непривычно.

  5. Буду пробовать. Спасибо!

  6. Понравилась верстка формы комментирования. А аватарки справа немного непривычно.

    Олег, сейчас я показал пример, что можно менять привычное расположение элементов. Вёрстка поддаётся правке. Аватарки можно где угодно разместить или совсем убрать. Всё зависит от задачи.

  7. Фагасебе там настроек и опций big surprise

    Надо будет попробовать)

  8. Опробовал на 0.94. Плагин хороший, рабочий. В мелочах есть что допилить, да и базовый дизайн оставляет желать лучшего. Но, что касается дизайна, то все дорабатывается под конкретные нужды посредством unit-файлов плагина и css. Найденный баг в работе "показать еще" описан разработчику.

    Из того, что еще хотелось бы видеть в следующей версии плагина:

    1. Автоматическая аякс-загрузка новых комментариев;

    2. Лучше будет более тесно связать форму отправки комментов с настройками комментирования на сайте. В частности, если анонимные комменты отключены - нет смысла выводить "табы".

    3. Отдельным табом можно было бы выводить кнопки логина соцсетей (в связке с тестируемым плагином авторизации через оные?).

    4. Аватарки юзеров/комюзеров - было бы логично делать их кликабельными, ведущими, допустим, на страницу инфы о пользователе.

    5. Добавить иконки соцсетей под текстом комментов, чтобы можно было расшаривать отдельные комментарии.

    6. Данные по "лайкам", так понимаю, сохраняются в БД. Возможно, имеет смысл добавить виджет с выводом топа комментаторов по числу лайков.

  9. Да, ну и имеет смысл интегрировать систему комментов на этом сайте grin

    И еще, забыл, два важных момента:

    1. Хорошо бы дать возможность редактирования собственных комментариев;

    2. Хорошо бы дать возможность прикреплять файл/картинку к изображению.

    По дизайну: вот так, на мой взгляд, выглядит уже гораздо симпатичней:

  10. Если возможно, то добавьте поле ввода мыла, что бы гости при комментировании, получали уведомление на свой ящик. Как это реализовано на ВП smile

  11. Большое спасибо за вашу работу! Вы все радуете и радуете нас своими разработками!) Молодцы!

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

  13. Посмотрите на хабр

    А мне наоборот не нравиться стиль их комментариев smile

  14. Да, еще нужно бы сделать нормальную (т.е. быструю) загрузку аватара с автоматическим созданием из загруженного картинки нужного размера.

  15. Заметил небольшой баг. Если стоит модерация комментов. То при добавлении комюзер не видит свой коммент с надписью "ожидает модерации", а видит просто комменты остальных пользователей. Версия 0. 94 в плагине ничего не менял.

  16. в Version 97 будет работать плагин или нужно допиливать?

  17. в Version 97 будет работать плагин или нужно допиливать?

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

  18. Спасибо!

  19. Что то я никак не пойму, почему при пагинации комментариев 1.2.3., номера комментариев на каждой странице начинаются заново?

    например стоит 50 комментариев на страницу, на первой 1.. 50, на второй я ожидаю увидеть 51..100 и так далее, но вижу опять 1..50 . И так на всех страницах комментариев.

    Как это дело исправить?

  20. Как это дело исправить?

    У меня пока нет под рукой тестового сайта с этим плагином, чтобы воспроизвести проблему. Вроде всё было нормально, когда разрабатывал.

  21. Илья

    Я понимаю что времени нет, вот страница..

    http://friendly-urls.vizr.ru/digest/seo-druzhestvennaja-url-struktura-dlja-maxsite-cms-chpu.html

    На первой странице номера 1..4, на второй тоже 1..4, но ни как не ..5..8

    Также, при выборе погрузки комментариев (если их установлено например 50), то после подгрузки, в поле номера комментария стоят прочерки вместо номеров.

    Также не плохо было бы добавить выбор очередности комментариев на самой странице (Прямой/Обратный). Сейчас Прямой/Обратный работает только для всех комментариев, но нельзя выбрать порядок отображения комментариев на странице пагинации

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

  22. На первой странице номера 1..4, на второй тоже 1..4, но ни как не ..5..8

    Фух! Напугали grin Я то думал действительно проблема с пагинацией. А оказывается дело в сквозной нумерации, за которую отвечает шаблон вывода комментариев. Эта "проблема" решается правкой логики шаблона (который предоставляет плагин) на вашем сайте. Изучайте содержимое плагина комментариев. найдите там эту самую нумерацию и сделайте по своему.

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

  23. Нашел я строчки в \application\maxsite\plugins\comments\units\page-comments-article-tree-tmpl.php

    <span class="mso-comment-num">{{ isset($begin_num) && $begin_num >= 0 && $comment_num > 0 ? $comment_num : '-' }}</span>

    И в \application\maxsite\plugins\comments\units\page-comments-article-tmpl.php

    <span class="mso-comment-num">{{ isset($begin_num) && $begin_num >= 0 ? $comment_num : '+' }}</span>

    И что мне с ними делать? Я же задаю вопросы не от того что мне делать нечего, а прошу помощи.

  24. Изучайте содержимое плагина комментариев. найдите там эту самую нумерацию и сделайте по своему.

    То есть то, что комментарии (номера) повторяются на каждой странице, это ни что иное как чьи то хотелки, а не доработка плагина?

  25. Понятное дело, что плагин бесплатный, но прошу помощи. Если нет времени и желания, так и напишите.

  26. И что мне с ними делать? Я же задаю вопросы не от того что мне делать нечего, а прошу помощи.

    Как один из вариантов решения вашей проблемы: измените шаблон удалив из него вообще всю нумерацию (указанные вами строки), чтобы она вас не смущала. По факту людям глубоко плевать на номер комментария.

    То есть то, что комментарии (номера) повторяются на каждой странице, это ни что иное как чьи то хотелки, а не доработка плагина?

    По сути, да. Я делал этот плагин на заказ и по его логике такая нумерация вполне уместна.

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

    Да понятно, что просите помощи, т.к. она вам нужна. Другой вопрос, я как автор уже давно не притрагивался к плагину и уже подзабыл логику его работы и чтобы восстановить её - нужен внешний стимул. Вы уж извините, но то, что вам нужна бесплатная помощь - довольно слабый мотиватор, когда на другой чаше весов стоит обеспечение моей семьи. Но при этом желание помочь вполне присутствует, да.

  27. По факту людям глубоко плевать на номер комментария.

    Возможно, но у меня есть статья с 1000 комментариями и в ней идет текстовая перелинковка между комментариями. Например, посмотрите в комментарии 805, посмотрите в комментарии 103, об этом уже говорилось в комментарии 553 и тд.

    Сайт у меня на вордпрессе, я его уже перенес на максайт, работает на опен сервере. Мало того, что я не знаю что делать с индексацией этих страниц комментариев (так как они проиндексированы по другим урлам), так тут еще это, вроде пустяк, но получится абракадабра. Человек будет искать 553 комментарий, которого нет (номера).

    А сам могу сделать как надо, но я не могу заставить работать переменную в шаблоне плагина. Как ее там объявить, я не знаю.

    Мне нужна все го лишь одна переменная, это число, номер страницы пагинации. Например нажал на 3 ссылку в пагинации, и переменная мне отдавала число 3. Если нажал на 15 страницу пагинации, переменная мне бы отдавала число 15 и тд. Все, больше ни чего не надо.

    Формула расчета простая $comment_num = $comment_num + (50* $r['next_url'])

    $r['next_url'] этот ключ массива отдает число, номер пагинации?

  28. Вот так я предполагаю должна выглядеть строчка с формулой

    [html_base64]PHNwYW4gY2xhc3M9Im1zby1jb21tZW50LW51bSI+e3sgaXNzZXQoJGJlZ2luX251bSkgJiYgJGJlZ2luX251bSA+PSAwICYmICRjb21tZW50X251bSA+IDAgPyAkY29tbWVudF9udW0gOiAkY29tbWVudF9udW0gPSAkY29tbWVudF9udW0gKyA

    Если первая страница пагинации, то $comment_num, то есть от 1 до 50.

    Если вторая и последующие страницы, то $comment_num = $comment_num + (50* ($r['next_url'] - 1)), то есть 51..100 и тд,

    Надо только вместо $r['next_url'] вставить туда переменную, отдающее число, номер страницы, которую я не могу найти.

  29. Если первая страница пагинации, то $comment_num, то есть от 1 до 50.

    Если вторая и последующие страницы, то $comment_num = $comment_num + (50* ($r['next_url'] - 1)), то есть 51..100 и тд,

    Надо только вместо $r['next_url'] вставить туда переменную, отдающее число, номер страницы, которую я не могу найти.

  30. $r['next_url']

    Эта переменная в вызываемом месте вообще доступна?? Чую, что нет.

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

    Однако есть другой способ. Учитывая, что у нас информация о текущей странице пагинации комментариев зашита в урле текущей страницы (например, строкой /comments-next/2), нам нужно просто распарсить его примерно таким кодом:

    preg_match_all( '!\/comments\-next\/(.+?)($|\/)!is', mso_current_url(), $res);

    Тогда в переменной $res окажется нужный вам номер.

  31. Ну и вместо 50, в формулу подставить $options['comments_page_limit'], хотя это мне не надо, задача в другом.

  32. Эта переменная в вызываемом месте вообще доступна??
    Нет, поэтому я встал на месте и не знаю что делать.

    Тогда в переменной $res окажется нужный вам номер.

    Попробую, отпишусь.

  33. Попробовал вставить, ни чего не происходит.

    Решил посмотреть какое значение принимает $res через echo..

    Выдает такую ошибку..

    Severity: Notice
    Message: Array to string conversion
    Filename: comments/index.php(1887) : eval()'d code
    Line Number: 22
    Array

    Все действия произвожу в файле шаблона application\maxsite\templates\3_max-zmey\type\page\units\page-comments-article-tree-tmpl.php, который скопировал из папки плагина.

  34. У меня урл такого вида .htm/comment/2 без next. Попробовал в приведенном коде убрать -next, тоже самое, echo выдает ошибку.

  35. Попробовал вставить, ни чего не происходит.

    Извините меня. Не предупредил, что это только направление решения, а не само решение. Думал, что вам знаком php, раз вы пытаетесь с кодом работать. Функция возвращает массив. Вам нужен только один элемент массива. Точный я не помню, надо смотреть.

    Выводить значения для отладки в рамках движка проще и легче функцией pr();

    pr($res);
  36. А я и не знаю php, метод тыка, он такой. grin

  37. С функцией pr(); вылетает таже самая ошибка.

    Попробовал так.. print_r($res);

    Получил, что на 1 странице, что на второй, одинаково...

    Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )

    Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )

  38. То есть нету нужного числа в массиве.

  39. Или так..

    <? echo "
    "; print_r($res); echo "
    ";?>
    Array
    (
        [0] => Array
            (
            )
        [1] => Array
            (
            )
        [2] => Array
            (
            )
    )
  40. Илья

    После отправки комментариев, режет код, вы что нибудь с этим сделайте, невозможно что то нормально показать.

  41. Продолжаю свой монолог.. LOL

    Заменил регулярку в приведенном вами кодом с '!\/comments\-next\/(.+?)($|\/)!is' на '/[0-9]*/'

    Теперь получил требуемое, сократил код, чтобы не было простыни..

    Array

    (

    [0] => Array

    (

    [0] =>

    [1] =>

    [2] =>

    [3] =>

    ....

    [92] =>

    [93] =>

    [94] => 19

    [95] =>

    )

    )

    19 страница. Теперь нужно пол интернета облазить, как вытащить оттуда нужное. grin

  42. Илья, спасибо, сделал сквозную нумерацию комментариев. Правда с моими знаниями пришлось повозится, но результат достигнут.

    Формула:

    Могу прислать файл, если надо.

  43. Попробую еще ajax пагинацию исправить grin

  44. Илья

    Как сделать, чтобы сначала были комментарии, а после них форма отправки комментариев? В каком файле находится этот порядок?

  45. И еще, если закрыть комментарии к статье, то все существующие комментарии в этой статье, перестают отображаться.

  46. С порядком отображения формы разобрался, находится в application\maxsite\plugins\comments\units\page-comments-general-tmpl.php

    {{ $comments_form }}

    Поставить ниже вывода комментариев..

    {{ $comments_list }}

    Вопрос по не отображающихся комментариев при закрытии их в статье, актуален.

  47. Илья, хотел у вас спросить, ведутся или велись ли работы по устранению ошибок в плагине? Вроде после нового года обещали.