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




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

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



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


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




gudman пишет:
никто не знает когда эта проблема начинает проявляться
Момент появления проблемы как выяснилось BON давно и верно определил. Странно другое - почему это до сих пор не устранено, ведь косяк более чем неприятный. Однако

На текущий момент я вижу, что проблема рождается не в функциях сортировки - там она просто визуализируется. Проблема появляется ещё на этапе создания нового форума (при условии, что первый в данной категории форум был когда-то удален). Для нового форума вычисляется индекс позиции, который совпадает с индексом позиции уже существующего форума. Естественно у функции сортировки при таких условиях едет крыша. Как только я пойму почему неверно вычисляется новый индекс - проблема будет решена.
 
 
NordWest
Отправлено: 1 ноября 2013 — 09:10
Post Id



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


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




Решение проблемы:
Открываем файл 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);

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


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


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


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




NordWest, в личку можно скинуть файл allforums.php?
 
 
NordWest
Отправлено: 1 ноября 2013 — 09:19
Post Id



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


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




cynical2207
Да, конечно - можно в личку, можно на почту.
Единственное - посмотреть смогу только вечером.
 
 
gudman
Отправлено: 1 ноября 2013 — 09:22
Post Id



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


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




NordWest, мне нужно поправить! если можно в личку файл пришлю?!
 
 
NordWest
Отправлено: 1 ноября 2013 — 09:26
Post Id



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


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




Да всем можно - чего спрашиваете то!!!! Улыбка
 
 
gudman
Отправлено: 1 ноября 2013 — 09:28
Post Id



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


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




я так понимаю что исправления в файле setforums.php для нас тоже актуальны?
другими словами, файл этот исправлять?
 
 
NordWest
Отправлено: 1 ноября 2013 — 09:29
Post Id



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


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




Обязательно! Приведённый код исправляет ошибку в функции и применить его нужно всем.
 
 
gudman
Отправлено: 1 ноября 2013 — 09:43
Post Id



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


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




сделал исправления в setforums.php
 
 
1Bot
Отправлено: 1 ноября 2013 — 13:03
Post Id



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


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




По сути изменений:
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;
 
 
NordWest
Отправлено: 1 ноября 2013 — 13:27
Post Id



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


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




Цитата:
откуда появляются некорректные номера позиций форума в категории?
Всё просто.
Когда на свеже-установленном движке создаем новые форумы, то они получают позицию в виде "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 всё же придется писать - если форум достаточно большой руками там править запаришься.
 
 
gudman
Отправлено: 1 ноября 2013 — 13:48
Post Id



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


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




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

да, да, у меня наверное большой. Улыбка
 
 
NordWest
Отправлено: 1 ноября 2013 — 13:50
Post Id



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


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




За то будет на чем тренироваться. Улыбка
Правда вам придется немного подождать.
 
 
gudman
Отправлено: 1 ноября 2013 — 13:53
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.0808]     [ ]