Как отсортировать форумы?

#1 15 ноября 2013 в 13:34
Подскажите как отсортировать форумы(изменить порядок отображения)?
В настройках нашел только сортировку категорий.
Неужели у форума нет такой элементарной функции?

Это хорошо, когда ты с самого начала знаешь какие форумы у тебя будут. А если нет и через некоторое время нужно добавить новый. Он ведь будет не там где нужно.
#2 29 ноября 2013 в 05:14
С трудом верится что ни у кого не было такой необходимости.

Готов заплатить тому кто сможет устранить эту недоработку и сделать сортировку у форумов.
#3 29 ноября 2013 в 07:26
Можно зайти в базу через phpmyadmin и там отредактировать поле "ordering"
#4 29 ноября 2013 в 08:34


Можно зайти в базу через phpmyadmin и там отредактировать поле "ordering"

Amurland

Пробовал, порядок отображения не меняется.
#5 30 декабря 2013 в 20:17
Вопрос очень актуален. Уже несколько сайтов ждут новых форумов в категориях. Разработчики или знающие люди, подскажите, плиз. Проблема не единичная же.
#6 30 декабря 2013 в 20:37
Я вот саму задачу не понял.
А вообще сортировка форумов, это:
components/forum/model.php
Там функция
  1. public function getForums($is_admin=false){
  2.  
  3. $pub_sql = $is_admin ? '' : ' AND f.published = 1';
  4.  
  5. $sql = "SELECT f.*, cat.title as cat_title, cat.seolink as cat_seolink
  6. FROM cms_forums f
  7. LEFT JOIN cms_forum_cats cat ON cat.id = f.category_id AND cat.published = 1
  8. WHERE f.parent_id > 0 {$pub_sql}
  9. {$this->inDB->where}
  10. ORDER BY cat.ordering, f.NSLeft \n";
  11.  
  12. if ($this->inDB->limit){
  13. $sql .= "LIMIT {$this->inDB->limit}";
  14. }
  15.  
  16. $result = $this->inDB->query($sql);
  17.  
  18. $this->inDB->resetConditions();
  19.  
  20. if(!$this->inDB->num_rows($result)){ return array(); }
  21.  
  22. while ($forum = $this->inDB->fetch_assoc($result)){
  23.  
  24. // Уровень первого элемента
  25. $first_level = isset($first_level) ? $first_level : $forum['NSLevel'];
  26.  
  27. // проверяем доступ к форуму
  28. if(!cmsCore::checkContentAccess($forum['access_list'])) { continue; }
  29. // получаем массив последнего сообщения
  30. $forum['last_msg_array'] = cmsCore::yamlToArray($forum['last_msg']);
  31. if($forum['last_msg_array']){
  32. $forum['last_msg_array']['fpubdate'] = cmsCore::dateFormat($forum['last_msg_array']['pubdate']);
  33. }
  34. // Путь до иконки форума
  35. $forum['icon_url'] = '/upload/forum/cat_icons/'.($forum['icon'] ? $forum['icon'] : 'forum.gif');
  36.  
  37. // Формируем корневой уровень
  38. if($forum['NSLevel'] == $first_level){
  39. $forums[] = $forum;
  40. } else { // формируем подфорумы
  41. $k = array_keys($forums);
  42. $forums[end($k)]['sub_forums'][] = $forum;
  43. }
  44.  
  45. }
  46.  
  47. return cmsCore::callEvent('GET_FORUMS', $forums);
  48.  
  49. }
В запросе за сортировку отвечает ORDER BY cat.ordering, f.NSLeft \n";
#7 30 декабря 2013 в 21:18
Вся суть в NSLeft
#8 30 декабря 2013 в 23:31
Спасибо огромное. Хоть стало ясно где можно ковырять. Изменяя NSLeft поместил форум в нужное место. Но NSRight тоже нужно изменять вместе с NSLeft. Причем форумы имеют чётную нумерацию по NSLeft, а подфорумы нечетную.

Я вот саму задачу не понял.

WAERZ
))) Значит Вам повезло и Вы не сталкивались с этой проблемой. Попробую объяснить. Допустим создали форумы и категории с такой структурой:

Категория 1
Форум 1
Форум 2
Категория 2
Форум 1
Форум 2


И если нужно будет добавить в Категорию 1 Форум 3, то это будет выглядеть так

Категория 1
Форум 1
Форум 2
Категория 2
Форум 1
Форум 2
Категория 1
Форум 3


Думаю понятно объяснил
#9 15 января 2014 в 16:17

)) Значит Вам повезло и Вы не сталкивались с этой проблемой. Попробую объяснить. Допустим создали форумы и категории с такой структурой:

Категория 1
Форум 1
Форум 2
Категория 2
Форум 1
Форум 2

И если нужно будет добавить в Категорию 1 Форум 3, то это будет выглядеть так

Категория 1
Форум 1
Форум 2
Категория 2
Форум 1
Форум 2
Категория 1
Форум 3

Думаю понятно объяснил

mk727

Не совсем так.

Допустим я создал категории и форумы

Категория 1
Форум 1
Форум 2
Категория 2
Форум 1
Форум 2

Затем я захотел добавить еще один форум (форум 3) в Категорию 1

Получится вот так

Категория 1
Форум 1
Форум 2
Форум 3
Категория 2
Форум 1
Форум 2

Но если мне нужно чтобы Форум 3 был не после Форума 2, а был самым верхним.
Т.е.

Категория 1
Форум 3
Форум 1
Форум 2
Категория 2
Форум 1
Форум 2


Что делать в этом случае? Почему у категорий есть сортировка, а у форумов нет?
Форумы создаются намного чаще и в большем количестве и возможность их сортировки намного нужнее чем сортировка категорий.
#10 30 июля 2015 в 18:32
Не очень въехал в сию писанину)
Так как отсортировать? изменение id в базе особо ничего не дало кроме изменений привязки категорий оО
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.