ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


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

> Без описания
NordWest
Отправлено: 4 ноября 2013 — 20:56
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Ошибка проявлялась как невозможность правильно выставить порядок форумов.

Решение проблемы:
Спойлер (Отобразить)
 
 
1Bot
Отправлено: 1 ноября 2013 — 14:14
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




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, ... А после этого "вручную" уже расставить порядок ссылками " Сдвинуть вверх / Сдвинуть вниз".
Еще, как вариант, можно вместо колонки "Сдвинуть вверх / Сдвинуть вниз" Сделать колонку "Порядок сортировки", где вручную вносить номер форума по порядку сортировки.
 
 
gudman
Отправлено: 1 ноября 2013 — 14:56
Post Id



Супермодератор
ExBB Team
Supermoderator


Покинул форум
Сообщений всего: 351
Дата рег-ции: Дек. 2009  
Репутация: 19




а ссылки форумов при этом не исправятся на другие?
 
 
1Bot
Отправлено: 1 ноября 2013 — 15:26
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




gudman пишет:
а ссылки форумов при этом не исправятся на другие?

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

(Отредактировано автором: 1 ноября 2013 — 15:26)

 
 
NordWest
Отправлено: 1 ноября 2013 — 15:53
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Цитата:
В Админке / Управление форумами В каждой категории добавить ссылку "Очистить порядок"
Да, наверное как-то так и буду делать.
 
 
NordWest
Отправлено: 1 ноября 2013 — 21:48
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Анализируя код нашел функцию сортировки по позиции, которая вызывается перед записью данных в файл.

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


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



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Дополнительные изменения:

Снова открываем файл 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.
 
 
cynical2207
Отправлено: 2 ноября 2013 — 15:06
Post Id


Пользователь
Newbie


Покинул форум
Сообщений всего: 16
Дата рег-ции: Авг. 2013  
Репутация: 0




NordWest пишет:
Дополнительные изменения:


Спасибо! Похоже помогло!
 
 
gudman
Отправлено: 2 ноября 2013 — 17:55
Post Id



Супермодератор
ExBB Team
Supermoderator


Покинул форум
Сообщений всего: 351
Дата рег-ции: Дек. 2009  
Репутация: 19




NordWest, подтверждаю....работает! Спасибо за решение проблемы!
Вот теперь в первый пост нужно выложить полную инструкции по исправлению проблемы...
 
 
gudman
Отправлено: 4 ноября 2013 — 19:46
Post Id



Супермодератор
ExBB Team
Supermoderator


Покинул форум
Сообщений всего: 351
Дата рег-ции: Дек. 2009  
Репутация: 19




NordWest, скомпануй пожалуйста решение проблемы в один пост, я его закреплю, сделаю первым постом темы!
 
 
NordWest
Отправлено: 4 ноября 2013 — 20:41
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Посмотрите здесь.
 
 
gudman
Отправлено: 5 ноября 2013 — 04:44
Post Id



Супермодератор
ExBB Team
Supermoderator


Покинул форум
Сообщений всего: 351
Дата рег-ции: Дек. 2009  
Репутация: 19




закрепил, спасибо!
 
 
Страниц (4): « 1 2 3 [4]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Решение проблем »

> Похожие темы: Не получается упорядочить разделы форума
Темы Форум Информация о теме Обновление
Что это прицепилось к форуму?
Клон форума?
Общие вопросы Ответов: 2
Автор темы: mustd
2 января 2014 — 22:07
Автор: mustd
Проблема с перенаправлением!
Проблема с перенаправлением гостя на главную страницу форума
Решение проблем Ответов: 2
Автор темы: trito
9 января 2011 — 20:55
Автор: trito
FlatBB
адаптивный стиль для форума, в стиле flat
Темы оформления для ExBB 1.1.3 Ответов: 18
Автор темы: WolfGeeN
2 января 2020 — 00:57
Автор: gusaka
Как закрыть в <noindex> и <rel="nofollow"> ссылку на _ripe.net?
Средствами форума
Настройка форума Ответов: 2
Автор темы: mastersound
26 сентября 2010 — 10:49
Автор: mastersound
Неактивные ссылки
после обновления форума с 0.15
Установка и обновление Ответов: 3
Автор темы: Pauk
14 ноября 2010 — 14:27
Автор: Pauk
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




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

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0792]     [ ]