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 :: Версия для печати :: Не получается упорядочить разделы форума [4]
ExBB Community » Файловый ExBB » Решение проблем » Не получается упорядочить разделы форума

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

46. - 1 ноября 2013 — 15:53 - перейти к сообщению
Цитата:
В Админке / Управление форумами В каждой категории добавить ссылку "Очистить порядок"
Да, наверное как-то так и буду делать.
47. - 1 ноября 2013 — 21:48 - перейти к сообщению
Анализируя код нашел функцию сортировки по позиции, которая вызывается перед записью данных в файл.

CODE:
function sort_by_position($a, $b)
{
if ($a['position'] == $b['position']) {return 0;}
return ($a['position'] < $b['position']) ? -1 : 1;
}


Работает так. Если два соседних элемента равны - возвращаем 0, и элементы не переставляются. Если больше или меньше - то возвращается -1 или 1 и элементы переставляются.
Бросилось в глаза, что условие, когда элементы совпадают в нормальных условиях выполняться не должно. Можно использовать, как аварийное событие и вызывать функцию устранения ошибки. Тут вариантов можно накрутить масса вплоть до банального вызова диалогового окна с просьбой задать новую позицию элемента, т.к. текущая неверна. Будетс минимальным изменением в коде и пользователь сможет контролировать процесс.
48. - 2 ноября 2013 — 11:52 - перейти к сообщению
Дополнительные изменения:

Снова открываем файл setforums.php в котором ищем строку
CODE:
asort($catarray,SORT_NUMERIC);

перед которой вставляем
CODE:
$num = 0;
foreach ($catarray as $key=>$value)
{
$num++;
$cur_pos = ($num < 10) ? intval($catid).'0'.$num : intval($catid).$num;
$allforums[$key]['position'] = intval($cur_pos);
}


После этого идем в админку и пробуем двигать форумы.
Если setforums.php был кривой не пытайтесь на этом этапе двигать самый первый пункт вниз или самый нижний вверх. Лучше выбрать любой форум из середины и сдвинуть в любую сторону. Если сдвинуть получилось, значить корректная индексация позиций в этой категории восстановлена и дальше можно уже двигать что попало и куда попало.

Пару слов о том, что делает приведённый выше код. Сразу после чтения структуры форумов в выбранной категории код делает принудительную переиндексацию позиций. Можно возразить, что это излишество и данный код нужен лишь на этапе исправления ошибок, однако я посчитал, что код не ресурсоёмкий и лишний раз правильно выстроить индексы позиций будет не лишним.
(Добавление)
Да, забыл предупредить!!!
Я вроде всё учел, но человеческий фактор исключать нельзя - сделайте на всякий случай резервную копию allforums.php.
49. cynical2207 - 2 ноября 2013 — 15:06 - перейти к сообщению
NordWest пишет:
Дополнительные изменения:


Спасибо! Похоже помогло!
50. gudman - 2 ноября 2013 — 17:55 - перейти к сообщению
NordWest, подтверждаю....работает! Спасибо за решение проблемы!
Вот теперь в первый пост нужно выложить полную инструкции по исправлению проблемы...
51. gudman - 4 ноября 2013 — 19:46 - перейти к сообщению
NordWest, скомпануй пожалуйста решение проблемы в один пост, я его закреплю, сделаю первым постом темы!
52. - 4 ноября 2013 — 20:41 - перейти к сообщению
Посмотрите здесь.
53. - 4 ноября 2013 — 20:56 - перейти к сообщению
Ошибка проявлялась как невозможность правильно выставить порядок форумов.

Решение проблемы:
Спойлер (Отобразить)
54. gudman - 5 ноября 2013 — 04:44 - перейти к сообщению
закрепил, спасибо!

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

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