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 и ищем кусок кода
Открываем файл 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);
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;
{
if ($forum['catid'] == $catid && $count < $forum['position'])
{$count = $forum['position'];}
}
$count++;
$catid2 = ($subforum) ? 0 : $catid;
$position = $count;
Заменяем поиском наибольшего номера позиции форума в категории.
NordWest пишет:
После этого вновь созданные форумы будут получать корректный индекс позиции, т.е. если производить установку с нуля, то больше проблема проявляться не будет.
Для тех же, у кого проблема есть уже сегодня - нужно ещё дополнительно поправить кривую структуру в файле allforums.php
Отдельный скрипт писать не хочу - мне проще, если кому будет нужно, поправить этот файл руками.
После этого вновь созданные форумы будут получать корректный индекс позиции, т.е. если производить установку с нуля, то больше проблема проявляться не будет.
Для тех же, у кого проблема есть уже сегодня - нужно ещё дополнительно поправить кривую структуру в файле 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
Два форума с одной позицией - вот и пошло поехало дальше ...
Я считаю, что позиция нового форума должна вычисляться всегда строго по одному алгоритму - берём самую нижнюю позицию форума в данной категории и добавляем единицу. В результате любой новый форум на момент создания всегда будет ниже предидущего. Привязки к количесву форумов вообще быть не должно.
Цитата:
Всё просто.откуда появляются некорректные номера позиций форума в категории?
Когда на свеже-установленном движке создаем новые форумы, то они получают позицию в виде "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 всё же придется писать - если форум достаточно большой руками там править запаришься.
Кстати код для коррекции кривых файлов allforums.php всё же придется писать - если форум достаточно большой руками там править запаришься.
В Админке / Управление форумами В каждой категории добавить ссылку "Очистить порядок" при нажатии на которую принудительно всем форумам в категории задать порядок 01, 02, ... А после этого "вручную" уже расставить порядок ссылками " Сдвинуть вверх / Сдвинуть вниз".
Еще, как вариант, можно вместо колонки "Сдвинуть вверх / Сдвинуть вниз" Сделать колонку "Порядок сортировки", где вручную вносить номер форума по порядку сортировки.
44. gudman - 1 ноября 2013 — 14:56 - перейти к сообщению
а ссылки форумов при этом не исправятся на другие?
45. 1Bot - 1 ноября 2013 — 15:26 - перейти к сообщению
gudman пишет:
а ссылки форумов при этом не исправятся на другие?
Ссылки форумов остаются прежними при любом порядке сортировки.