Порядок комментариев

InstantCMS 2.X

Как изменить?

#1 16 апреля 2017 в 07:55
Как изменить порядок вывода комментариев в двойке? Чтобы новые были сверху, а старые снизу? Помнится мне в первой ветке всё правилось очень легко, но вот во второй ветке я решения не нашёл и есть ли оно вообще?
#2 16 апреля 2017 в 08:51
Наверное навряд ли. Вроде в двойке другая структура комментов. Смотрите сами. Вы создали коммент 25-го, я ответил на него 26-го. Мой коммент является "подкомментом" вашего.Как его можно сверху вашего разместить? Это же дерево. Тогда нужно отдельно сортировать корневые и отдельно дочерние.Т.е. возможно переписывать запрос. Хотя 100% не уверен.)))
#3 16 апреля 2017 в 08:56
Мартин, Вы имеете в виду ответы на комментарии, а я сами комментарии.
Мне нужно чтобы комментарии выстраивались по убыванию даты, а ответы на них — это уже дело десятое.
Хотя в идеале должна быть и такая настройка, чтобы наверх поднимался комментарий, на который ответили.
И это реально сделать, но как?
#4 16 апреля 2017 в 10:43
  1. public function addComment($comment){
  2.  
  3.  
  4.  
  5. if ($comment['parent_id'] == 0){
  6.  
  7. $this->incrementThreadOrdering($comment['target_controller'], $comment['target_subject'], $comment['target_id'], '*');
  8.  
  9. $comment['level'] = 1;
  10. $comment['ordering'] = 1 /* $this->getNextThreadOrdering($comment['target_controller'], $comment['target_subject'], $comment['target_id']) */;
  11.  
  12. } else {
  13.  
  14. $parent_comment = $this->getComment($comment['parent_id']);
  15.  
  16. $comment['level'] = $parent_comment['level'] + 1;
  17.  
  18. $comment['ordering'] = $this->getNextParentOrdering($parent_comment);
  19. if (!$comment['ordering']) { $comment['ordering'] = $this->getNextThreadOrdering($comment['target_controller'], $comment['target_subject'], $comment['target_id']); }
  20.  
  21. $this->incrementThreadOrdering($comment['target_controller'], $comment['target_subject'], $comment['target_id'], $comment['ordering']);
  22.  
  23. }
  24.  
  25. cmsCache::getInstance()->clean('comments.list');
  26.  
  27. return $this->insert('comments', $comment);
  28.  
  29. }
#5 16 апреля 2017 в 12:26
Ris, работает, спасибо!!!
#6 12 ноября 2017 в 20:59
А как сделать, чтобы после добавления коммента 1 уровня, он оказывался сразу сверху, без перезагрузки страницы?
#7 13 ноября 2017 в 00:13

без перезагрузки страницы

ParadoX
Без перезагрузки, значит что-то на аяксе.
#8 17 февраля 2018 в 12:38
Тоже интересует данный вопрос. Подскажите, пожалуйста, куда этот код нужно вставить?

Блок "public function addComment($comment){" я нашёл в "system\controllers\comments\model.php" заменил его на предложенный Risом, но не сработало.
#9 26 августа 2018 в 19:23
Есть рабочий вариант для 2.10.0?
#11 27 мая 2019 в 13:35
Как в 2.12.2 новые комментарии выводить наверху?
#12 27 мая 2019 в 16:47
Yar, при таком варианте невозможно будет построить дерево комментариев (ответы на ответы на комментарии).
Поэтому такой функции и нет.
#13 27 мая 2019 в 17:12
Система комментирования в YouTube хорошо реализована, нам бы такую smile
#14 27 мая 2019 в 18:50
Zau4man, очень жаль

Смотрите сами. Вы создали коммент 25-го, я ответил на него 26-го. Мой коммент является "подкомментом" вашего.Как его можно сверху вашего разместить? Это же дерево. Тогда нужно отдельно сортировать корневые и отдельно дочерние.Т.е. возможно переписывать запрос. Хотя 100% не уверен.)))

Мартин
… но добавляя комментарии к разным комментариям они же к своим родителям прописываются, независимо от даты? Т.е. получается, что комментарии главные независимы. Хотя 100% не уверен.)))
#15 2 июня 2019 в 06:04


Yar, при таком варианте невозможно будет построить дерево комментариев (ответы на ответы на комментарии).
Поэтому такой функции и нет.

Zau4man
Можно через пункты сортировки сделать следующее.
1. Последовательно. (Выводит как в коробке)
2… Последние в списке. (Дерево переворачиваем корнями вверх)
3. Последние в цепочке. (С учётом кто, кому ответил. Выводить скрытыми цепочками. Так же корнями вниз и корнями вверх)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.