Виджет комментарии в ленте активности

+27
2.5K
Сто раз на форуме поднималась тема про сведение событий на сайте и комментариев в один виджет.
Многие (и я в том числе) пытались заносить в ленту активности новые события при добавлении комментария, но этот метод имеет несколько недостатков: "распухание" таблицы cms_activity и появление в ленте активности битых ссылок при удалении комментариев.
Проблему можно решить с помощью виджета "Активность и комментарии", который будет доступен во вкладке Все виджеты — Активность.

В результате, после установки виджета мы имеем следующую ленту активности, в которой в одном списке отображаются и события на сайте и комментарии:
Иллюстрация

Установка хука стандартным способом из админки.

Скачать дополнение

.
+3
SmartControl SmartControl 6 лет назад #
Поправьте в установщике (переменная $item затесалась)
Код PHP:
  1. $comment['description'] = !empty($comment['description']) ?
  2. $item['description'] :
И такое решение работает только на первой странице Ленты.. На остальных оно работает некорректно - сверху всегда будут выводиться комментарии (потому что комментарии не пролистываются).

И можно форматирование даты коммента добавить (2018-09-04 09:05:30 => 5 дней назад).
И еще момент - в пагинации выводится подпись "Показаны 1-15 из 42" => а реально с комментами выводится больше.

Все-таки для красивого варианта нужно добавлять комментарии в таблицу ленты активности, так же как и остальные события.
+1
Ris Ris 6 лет назад #
Спасибо, исправил.
И такое решение работает только на первой странице Ленты
Это вообще решение не для ленты, а для виджета. Об этом написано в первой строке поста.
Спасибо, что обратили внимание на то, что этот хук срабатывает и в ленте.
Отключил подгрузку комментариев в ленту активности.
Архив перезалит.
0
Capitan Capitan 6 лет назад #
А можно ли сделать вот такое.
Добавляет комментарий к (а тут название типа контента) Общественный анализ марсианского опыта жизни
+1
Ris Ris 6 лет назад #
Спойлер
+1
Zau4man Zau4man 6 лет назад #
На мой взгляд, решение костыльное.

"распухание" таблицы cms_activity

она таки "распухнет" до тех же размеров, но несколько позже.

Надо комплекс хуков, отслеживающих "добавление в ленту при добавлении комментария" и "удаление из ленты" при удалении комментария, материала и т.п.
+1
Ris Ris 6 лет назад #
она таки "распухнет" до тех же размеров, но несколько позже.
For example:
Код SQL:
  1. Отображение строк 0 - 24 (3432 всего, Запрос занял 0.0057 сек.) [subject_id: ... - ...]
  2. SELECT * FROM `cms_activity` ORDER BY `subject_id` ASC
Код SQL:
  1. Отображение строк 0 - 24 (1029009 всего, Запрос занял 0.0029 сек.) [date_pub: 2018-09-09 22:18:07... - 2018-09-09 21:24:46...]
  2. SELECT * FROM `cms_comments` ORDER BY `date_pub` DESC
То есть если бы комментарии дублировались в активность, там было бы 1032441 строк.
Не находите, что между 3432 и 1032441 есть кое-какая разница?
На мой взгляд, решение костыльное.
Да, решение костыльное и подходит только для виджета на главной странице. Но я попробую в хуке одним запросом достать данные сразу из двух таблиц. Если у Вас есть мысли по этому поводу - излагайте. Сами видите, что с моим количеством комментариев, дублировать их в активность - вообще не вариант.
0
SmartControl SmartControl 6 лет назад #
Не находите, что между 3432 и 1032441 есть кое-какая разница?
С одной стороны логика говорит что разница есть, а с другой выборка по мильону то в два раза быстрее у вас в примере)

Но я попробую в хуке одним запросом достать данные сразу из двух таблиц.
Вот это был бы отличный вариант для виджета - по количеству выводилось бы ровно сколько нужно.

В профиле на вкладке комменты тоже добавляются в ленту, что неправильно (по крайней мере не все должны добавляться).. Так что может все-таки рассмотреть вариант с добавлением их в ленту. А ленту можно подчищать раз в какое-то время (архивировать или просто чистить).
+1
Ris Ris 6 лет назад #
а с другой выборка по мильону то в два раза быстрее у вас в примере)
В комментариях ордер бай дата пуб, на этом имеется хороший индекс, а на сабдект айди в активности индекса нет. smile
В профиле на вкладке комменты тоже добавляются в ленту, что неправильно
Спасибо, сейчас уничтожу.
0
Александр Александр 5 лет назад #
а скачать нельзя, ссылка битая
+1
Ris Ris 5 лет назад #
Перезалил:
/users/files/download7119.html
+1
Антон Антон 5 лет назад #
на 2.12.2 не работает
+3
Ris Ris 5 лет назад #
Сделаю сегодня вечером отдельным компонентом.
0
Антон Антон 5 лет назад #
Обновлено?
+1
Ris Ris 5 лет назад #
Пока нет. Возникли неотложные дела.
Я напишу, как будет о чем писать.
0
Антон Антон 4 года назад #
+1
Ris Ris 4 года назад #
0
Антон Антон 4 года назад #
не забыли, спасибо smile только вот чет не работает у меня. в событиях галки поставил, но не работает sad
+1
Ris Ris 4 года назад #
Не надо никаких событий. Положите виджет активности в неиспользуемые (на всякий случай) и добавьте на его место новый виджет "Активность и комментарии".
Спойлер
0
Антон Антон 4 года назад #
👍
0
Антон Антон 4 года назад #
Спасибо, все работает!
0
Антон Антон 4 года назад #
что за чудеса, сегодня не отображаются комментарии(( все сделал как вы писали выше. позавчера все норм работало

Еще от автора

Сверхлёгкий webserver на Alpine linux
Не знаю, как нормальных людей, но меня всё время мучает вопрос, зачем для размещения небольшого сайта на виртуальном сервере я вынужден устанавливать
Накрутка рейтинга и кармы пользователям, контенту и фото.
По многочисленным просьбам изготовил новый инструмент для изменения администратором сайта рейтинга и кармы пользователей.
Авторизация по любым полям из профиля и по API
Представляю уважаемому сообществу небольшое дополнение для доработки авторизации вашего сайта, а также для интеграции двух сайтов на Instantcms друг с
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.