PS Проверено на 1.8 и 1.9
Подскажите, как форму комментариев сделать открытой примерно как тут?
А как сделать, что бы новые комментарии шли выше старых на instantCMS 2x
Пробовали, и так и так — логично, конечно, чтобы новые были вверху, но столкнулись с проблемой "вложенности" и комментариев комментариев
поднимать выше те, на которые пошла ветка обсуждения? =)
от старых к новым сверху вниз, пока самое оптимальное решение
единственное, что лучше — это не отображать всю ветку — а показывать только несколько новых — и иметь кнопочку "Развернуть" все
Если вдуматься странная логика)))логично, конечно, чтобы новые были вверху ...
Мы читаем текст сверху вниз и слева на право. Т.е. логично что текст который находится выше и левее написан/напечатан ранее чем текст который располагается ниже и правее))) Другими словами сверху более старые комменты, снизу более новые.
а что тут такого странного. Стены в группах вк, на страницах сверху вниз и нормально. удобно.Если вдуматься странная логика
как в вк было бы идеально сами комменты новые сверху, а вложенные обсуждения как обычно
Вот если бы настроить это в компоненте галочки "показывать сверху вниз", "показывать снизу вверх". "показывать форму сферху" "показывать форму снизу"
И еще вкладки "новые", "обсуждаемые"(это которые ветки с вложенными), "рейтинг комментариев"
Реально если гибкая система комментариев была бы, то было бы удобнее.
Есть реальные рабочие решения?
\templates\default\controllers\comments\comment.tpl.php
$level = /* (($limit_nesting && $entry['level'] > $limit_nesting) ? $limit_nesting : ($entry['level']-1))*30 */ 1;
\system\controllers\comments\model.php
public function getComments($callback = null){ $user = cmsUser::getInstance(); $this->select('r.score', 'is_rated'); $this->joinUserLeft(); $this->joinLeft('comments_rating', 'r', "r.comment_id = i.id AND r.user_id='{$user->id}'"); if (!$this->order_by){ $this->orderBy('ordering', 'DESC'); } if (!$this->approved_filter_disabled) { $this->filterApprovedOnly(); } $this->useCache('comments.list'); return $this->get('comments', function($item, $model) use ($callback){ 'id' => $item['user_id'], 'nickname' => $item['user_nickname'], 'is_online' => cmsUser::userIsOnline($item['user_id']), 'avatar' => $item['user_avatar'] ); $item = $callback($item, $model); } return $item; }); }
Как вариант, убить древовидную структуру, везде прописать $level = 1
\templates\default\controllers\comments\comment.tpl.php
и выводить комментарии в обратном порядке:
$level = /* (($limit_nesting && $entry['level'] > $limit_nesting) ? $limit_nesting : ($entry['level']-1))*30 */ 1;
\system\controllers\comments\model.php
public function getComments($callback = null){ $user = cmsUser::getInstance(); $this->select('r.score', 'is_rated'); $this->joinUserLeft(); $this->joinLeft('comments_rating', 'r', "r.comment_id = i.id AND r.user_id='{$user->id}'"); if (!$this->order_by){ $this->orderBy('ordering', 'DESC'); } if (!$this->approved_filter_disabled) { $this->filterApprovedOnly(); } $this->useCache('comments.list'); return $this->get('comments', function($item, $model) use ($callback){ 'id' => $item['user_id'], 'nickname' => $item['user_nickname'], 'is_online' => cmsUser::userIsOnline($item['user_id']), 'avatar' => $item['user_avatar'] ); $item = $callback($item, $model); } return $item; }); }
Большое спасибо. Работает. Но думаю в было бы неплохо в коробке иметь сортировку комментариев, как отзывы на iMaps