Автоматически подписать автора на новые комментарии

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X

Как?

#1 8 августа 2025 в 09:57

Был уверен, что это либо есть по умолчанию, либо можно включить в настройках. Но нигде не нашел. В итоге у нас люди статьи пишут, а на вопросы в комментариях не отвечают:(

Задача максимально простая: я, как автор, хочу знать, что под моим постом/новостью/любым другим ТК кто-то написал коммент. Но каждый раз нажимать «подписаться» в блоке комментариев под своими постами я забываю.

В компоненте «Подписки» и «Комментарии» ничего такого не нашел. Может кто подскажет, что в каком модуле надо добавить, чтобы это реализовать?

ЗЫ. В идеале, конечно, в профиле пользователя сделать галочку «Автоматически следить за комментариями к ТК, где я автор». Но это потом. Пока можно и в коде просто подправить.

#2 8 августа 2025 в 11:43

Согласен, тема интересная, как раз думал как реализовать

#3 8 августа 2025 в 11:44

Как мне видится — проще всего сделать набор хуком для раздела комментарии, что-то вроде «в моих записях» и там отфильтровать записи где автор=залогиненый пользователь. 

#4 8 августа 2025 в 12:00

Создайте файл \system\controllers\comments\hooks\content_after_add_approve.php и внутри добавить

  1. <?php
  2.  
  3. class onCommentsContentAfterAddApprove extends cmsAction {
  4.  
  5. public function run($data){
  6.  
  7. $ctype_name = $data['ctype_name'];
  8. $item = $data['item'];
  9.  
  10. $this->model->
  11. filterEqual('target_controller', 'content')->
  12. filterEqual('target_subject', $ctype_name)->
  13. filterEqual('target_id', $item['id'])->
  14. toggleTracking(true, $item['user_id'], 'content', $ctype_name, $item['id']);
  15.  
  16. return $data;
  17.  
  18. }
  19.  
  20. }

Потом в Админке — Компоненты — Управление событием — нажать Обновить 

Работает только для новых записей

UPD: да, надо было true передать 

#5 8 августа 2025 в 12:28
Создайте файл \system\controllers\comments\hooks\content_after_add_approve.php и внутри добавить <?
My-InstantCMS.Ru

Подскажите ваш код для всех типов контента будет работать, или только страницы?

#6 8 августа 2025 в 12:45
Создайте файл \system\controllers\comments\hooks\content_after_add_approve.php и внутри добавить <?
My-InstantCMS.Ru

Предполагаю, что отслеживать — это в true надо щелкать. Пошел пробовать. Работает. Большое спасибо за оперативность.

  1. toggleTracking(true, $item['user_id'], 'content', $ctype_name, $item['id']);
Создайте файл \system\controllers\comments\hooks\content_after_add_approve.php и внутри добавить <?My-InstantCMS.Ru Подскажите ваш код для всех типов контента будет работать, или только страницы?
Vasa

Это хук на добавление любого ТК. Так что без разницы, что будут добавлять.

#7 8 августа 2025 в 13:12

 Vasa, Для всех типов контента, если вам надо некоторым, например новости, статьи, блоги, тогда после $item = $data['item']; добавить

  1. if ($ctype_name != 'news' || $ctype_name != 'articles' || $ctype_name != 'posts') { return $data; }
#8 8 августа 2025 в 14:23

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

#9 8 августа 2025 в 14:48
Подскажите пожалуйста где включить чтобы уведомления о новых личных сообщениях на почту пользователю приходили?
Vasa

Это в настройках уведомлений каждого пользователя (в настройках профиля). Они и приходят, НО если пользователь разлогинился с сайта. Я так думаю это сделано потому, что если бы уведомления о каждом сообщении шли на почту, то их могло бы быть миллион, и это проблема для сервера. 

#10 9 августа 2025 в 00:32

 My-InstantCMS.Ru, Я так пологаю что с этим хуком, вот про это можно забыть?

Находите файл \system\controllers\content\model.php и там в функции public function addContentItem($ctype, $item, $fields) в конце, перед return $item; пишете:

cmsCore::getModel('comments')->addTracking($item['user_id'], 'content', $ctype['name'], $item['id']);

#11 9 августа 2025 в 06:44

 pupsik, да, можете вернуть как было, так как лучше не делать такие правки 

#12 9 августа 2025 в 14:37

так как лучше не делать такие правки 

My-InstantCMS.Ru

Само собой. Просто на тот момент только это и нашел. Можно теперь вычеркнуть из списка правок после обновления :)

#13 10 августа 2025 в 16:35

На фотки альбомов только не подписывается.

#14 10 августа 2025 в 19:44

 pupsik, попробуйте такой код

  1. <?php
  2. class onCommentsContentAfterAddApprove extends cmsAction {
  3.  
  4. public function run($data){
  5.  
  6. $ctype_name = $data['ctype_name'];
  7. $item = $data['item'];
  8. $target_controller = ($ctype_name == 'photo') ? 'photos' : 'content';
  9.  
  10. $this->model->
  11. filterEqual('target_controller', $target_controller)->
  12. filterEqual('target_subject', $ctype_name)->
  13. filterEqual('target_id', $item['id'])->
  14. toggleTracking(true, $item['user_id'], 'content', $ctype_name, $item['id']);
  15.  
  16. return $data;
  17.  
  18. }
  19.  
  20. }
#15 10 августа 2025 в 20:16

Не прокатило.

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

Похожие темы

Похожее в блогах

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.