Notice: Undefined index: name in /home/exbb/exbb.info/www/community/include/lib.php on line 293 Notice: Undefined index: name in /home/exbb/exbb.info/www/community/include/lib.php on line 293 Notice: Undefined index: name in /home/exbb/exbb.info/www/community/include/lib.php on line 293 Notice: Undefined index: name in /home/exbb/exbb.info/www/community/include/lib.php on line 293 Notice: Undefined index: name in /home/exbb/exbb.info/www/community/include/lib.php on line 293 ExBB Community :: Версия для печати :: Не получается упорядочить разделы форума [3]
ExBB Community » Файловый ExBB » Решение проблем » Не получается упорядочить разделы форума

Страниц (4): « 1 2 [3] 4 »
 

31. cynical2207 - 1 ноября 2013 — 09:12 - перейти к сообщению
NordWest, в личку можно скинуть файл allforums.php?
32. - 1 ноября 2013 — 09:19 - перейти к сообщению
cynical2207
Да, конечно - можно в личку, можно на почту.
Единственное - посмотреть смогу только вечером.
33. gudman - 1 ноября 2013 — 09:22 - перейти к сообщению
NordWest, мне нужно поправить! если можно в личку файл пришлю?!
34. - 1 ноября 2013 — 09:26 - перейти к сообщению
Да всем можно - чего спрашиваете то!!!! Улыбка
35. gudman - 1 ноября 2013 — 09:28 - перейти к сообщению
я так понимаю что исправления в файле setforums.php для нас тоже актуальны?
другими словами, файл этот исправлять?
36. - 1 ноября 2013 — 09:29 - перейти к сообщению
Обязательно! Приведённый код исправляет ошибку в функции и применить его нужно всем.
37. gudman - 1 ноября 2013 — 09:43 - перейти к сообщению
сделал исправления в setforums.php
38. 1Bot - 1 ноября 2013 — 13:03 - перейти к сообщению
По сути изменений:
NordWest пишет:
Решение проблемы:
Открываем файл setforums.php и ищем кусок кода
CODE:
foreach ($allforums as $id => $forum) {
if ($forum['catid'] == $catid) $count++;
}
$count++;
$catid2 = ($subforum) ? 0 : $catid;
$position = ($count<10) ? intval($catid2.'0'.$count):intval($catid2.$count);

Т.е. осуществлялся подсчет количества форумов в категории.

NordWest пишет:
который заменяем кодом
CODE:
foreach ($allforums as $id => $forum)
{
if ($forum['catid'] == $catid && $count < $forum['position'])
{$count = $forum['position'];}
}
$count++;
$catid2 = ($subforum) ? 0 : $catid;
$position = $count;

Заменяем поиском наибольшего номера позиции форума в категории.

NordWest пишет:

После этого вновь созданные форумы будут получать корректный индекс позиции, т.е. если производить установку с нуля, то больше проблема проявляться не будет.
Для тех же, у кого проблема есть уже сегодня - нужно ещё дополнительно поправить кривую структуру в файле allforums.php
Отдельный скрипт писать не хочу - мне проще, если кому будет нужно, поправить этот файл руками.


Вопрос остается открытым: откуда появляются некорректные номера позиций форума в категории?
(Добавление)
Последнюю строку
CODE:
$position = ($count<10) ? intval($catid2.'0'.$count):intval($catid2.$count);

Правильнее оставить прежней, а не заменять ее строкой
CODE:
$position = $count;
39. - 1 ноября 2013 — 13:27 - перейти к сообщению
Цитата:
откуда появляются некорректные номера позиций форума в категории?
Всё просто.
Когда на свеже-установленном движке создаем новые форумы, то они получают позицию в виде "xyy", где
"x" - id категории
"yy" - количество уже существующих форумов + 1

Теперь смотрите что происходит.
Допустим мы создали 3 форума в первой категории:
- форум1 позиция 101
- форум2 позиция 102
- форум3 позиция 103

Теперь удалим любой форум, для наглядности например второй.
В итоге имеем:
- форум1 позиция 101
- форум3 позиция 103

А теперь создадим новый форум. Id у него будет 4 а вот позиция 103, т.к. количество форумов уже два. В итоге получаем:
- форум1 позиция 101
- форум3 позиция 103
- форум4 позиция 103

Два форума с одной позицией - вот и пошло поехало дальше ...

Я считаю, что позиция нового форума должна вычисляться всегда строго по одному алгоритму - берём самую нижнюю позицию форума в данной категории и добавляем единицу. В результате любой новый форум на момент создания всегда будет ниже предидущего. Привязки к количесву форумов вообще быть не должно.

Цитата:
Правильнее оставить прежней, а не заменять ее строкой
Не правильно. В предложенном мной варианте только так и не иначе. Я просто ищу последнюю позицию существующего форума и новый ставлю за ним. Что там ещё вычислять?
(Добавление)
Кстати код для коррекции кривых файлов allforums.php всё же придется писать - если форум достаточно большой руками там править запаришься.
40. gudman - 1 ноября 2013 — 13:48 - перейти к сообщению
NordWest пишет:
Кстати код для коррекции кривых файлов allforums.php всё же придется писать - если форум достаточно большой руками там править запаришься.

да, да, у меня наверное большой. Улыбка
41. - 1 ноября 2013 — 13:50 - перейти к сообщению
За то будет на чем тренироваться. Улыбка
Правда вам придется немного подождать.
42. gudman - 1 ноября 2013 — 13:53 - перейти к сообщению
да я особо не спешу! жил же с этим сколько времени....
43. 1Bot - 1 ноября 2013 — 14:14 - перейти к сообщению
NordWest пишет:
Цитата:
откуда появляются некорректные номера позиций форума в категории?
Всё просто.
Когда на свеже-установленном движке создаем новые форумы, то они получают позицию в виде "xyy", где
"x" - id категории
"yy" - количество уже существующих форумов + 1

Теперь смотрите что происходит.
Допустим мы создали 3 форума в первой категории:
- форум1 позиция 101
- форум2 позиция 102
- форум3 позиция 103

Теперь удалим любой форум, для наглядности например второй.
В итоге имеем:
- форум1 позиция 101
- форум3 позиция 103

А теперь создадим новый форум. Id у него будет 4 а вот позиция 103, т.к. количество форумов уже два. В итоге получаем:
- форум1 позиция 101
- форум3 позиция 103
- форум4 позиция 103

Два форума с одной позицией - вот и пошло поехало дальше ...

Я считаю, что позиция нового форума должна вычисляться всегда строго по одному алгоритму - берём самую нижнюю позицию форума в данной категории и добавляем единицу. В результате любой новый форум на момент создания всегда будет ниже предидущего. Привязки к количесву форумов вообще быть не должно.

Цитата:
Правильнее оставить прежней, а не заменять ее строкой
Не правильно. В предложенном мной варианте только так и не иначе. Я просто ищу последнюю позицию существующего форума и новый ставлю за ним. Что там ещё вычислять?

Нахожу Ваши аргументы и алгоритм полностью корректными, спасибо за исправленный досадный баг!

NordWest пишет:

Кстати код для коррекции кривых файлов allforums.php всё же придется писать - если форум достаточно большой руками там править запаришься.


В Админке / Управление форумами В каждой категории добавить ссылку "Очистить порядок" при нажатии на которую принудительно всем форумам в категории задать порядок 01, 02, ... А после этого "вручную" уже расставить порядок ссылками " Сдвинуть вверх / Сдвинуть вниз".
Еще, как вариант, можно вместо колонки "Сдвинуть вверх / Сдвинуть вниз" Сделать колонку "Порядок сортировки", где вручную вносить номер форума по порядку сортировки.
44. gudman - 1 ноября 2013 — 14:56 - перейти к сообщению
а ссылки форумов при этом не исправятся на другие?
45. 1Bot - 1 ноября 2013 — 15:26 - перейти к сообщению
gudman пишет:
а ссылки форумов при этом не исправятся на другие?

Ссылки форумов остаются прежними при любом порядке сортировки.

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0258]     [ ]