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


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

> Описание: при наличии прикрепленных сообщений
cynical2207
Отправлено: 25 августа 2013 — 05:30
Post Id


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


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




В теме есть прикреплённое сообщение, если в разделе содержащем эту тему нажать "последняя страница" тема открывается где-то с середины, а не на последней странице.
(Добавление)
Версия PHP:5.2.17-0.dotdeb.0
Версия движка: ExBB FM 1.0 Final
Прикреплено изображение
Без-имени-2.jpg

 
 
NordWest
Отправлено: 25 августа 2013 — 09:39
Post Id



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


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




Что значит "прикреплённое сообщение"?
 
 
cynical2207
Отправлено: 25 августа 2013 — 09:46
Post Id


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


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




NordWest, сообщение, которое всегда висит первым в теме, на каждой странице.
Прикреплено изображение
Без-имени-4.jpg

 
 
NordWest
Отправлено: 25 августа 2013 — 10:02
Post Id



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


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




Понял. Посмотрю на досуге...
 
 
NordWest
Отправлено: 25 августа 2013 — 13:34
Post Id



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


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




Не могу пока повторить вашу ситуацию - сложно создать более 60 страниц. Радость
При 20 страницах вроде всё ОК... Однако
(Добавление)
Создал 63 страницы - проблема не проявилась. Не знаю чем вам помочь, т.к. получается, что это не ошибка движка.
 
 
BON
Отправлено: 25 августа 2013 — 19:06
Post Id



Администратор
ExBB Team
Admin


Покинул форум
Сообщений всего: 2761
Дата рег-ции: Нояб. 2010  
Откуда: СССР/Белгород
Репутация: 71




cynical2207 пишет:
В теме есть прикреплённое сообщение, если в разделе содержащем эту тему нажать "последняя страница" тема открывается где-то с середины, а не на последней странице.

возможно из-за того, что сообщение которое прикреплено размещалось где то на середине страницы
 
 
cynical2207
Отправлено: 26 августа 2013 — 03:53
Post Id


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


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




BON пишет:
возможно из-за того, что сообщение которое прикреплено размещалось где то на середине страницы


Видимо нет. Попробовал следующее: скопировал весь бб-код из верхнего сообщения, удалил его, создал новое сообщение со скопированным кодом (т.е. с настоящими датой/временем), прикрепил. В результате то же самое, переходит именно на 56 страницу из 62.
 
 
NordWest
Отправлено: 26 сентября 2013 — 17:54
Post Id



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


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




Проблема в коде есть - вылезла и на моём форуме.
Вызвана тем, что при расчёте номера последней страницы не учитываются прикреплённые посты. Пока думаю как поправить.
 
 
1Bot
Отправлено: 26 сентября 2013 — 18:43
Post Id



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


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




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


Совершенно верно, при расчете количества страниц (P) учитывается только общее количество постов в теме (N) и количество сообщений на странице (n), которое задается в профиле у каждого пользователя
CODE:
P = 1 + floor( N / n )

где функция floor() - округление в меньшую сторону

При наличии (m) прикрепленных сообщений в теме (отображаются вверху на каждой странице) количество страниц правильнее считать по формуле
CODE:
P1 = 1 + floor( (N - m) / (n - m) )


Пример
CODE:
58 сообщений, 3 прикрепленных, 15 сообщений на странице
N = 58, m = 3, n = 15

P = 1 + floor( N / n ) = 1 + floor( 58 / 15 ) = 1 + floor( 3,866666666666667 ) = 1 + 3 = 4

P1 = 1 + floor( (N - m) / (n - m) ) = 1 + floor( (58 - 3) / (15 - 3) ) =
= 1 + floor( 55 / 13 ) = 1 + floor( 4,230769230769231 ) = 1 + 4 = 5


P.S. Обязательно нужно делать проверку что n > m!
 
 
NordWest
Отправлено: 26 сентября 2013 — 18:59
Post Id



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


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




1Bot пишет:
которое задается в профиле у каждого пользователя
CODE:P = 1 + floor( N / n )
где функция floor() - округление в меньшую сторону
В коде используется функция ceil которая округляет в большую сторону
CODE:
ceil($totalposts/intval($fm->user['posts2page']))

но суть от этого остаётся та же.

1Bot пишет:
При наличии (m) прикрепленных сообщений в теме (отображаются вверху на каждой странице)
Вот с получением количества прикреплённых сообщений и есть пока главная засада. Я нигде на форуме не нашел, что бы отображалось количество (может конечно плохо искал, есть такой косяк - невнимателен бываю).
В базе то же вроде нет места, где бы хранилась конкретная цифра. Похоже придётся перебирать все посты, искать в них прикреплённые и плюсовать. Но процедура то получается ресурсоёмкая и по сути лишняя - нужно эту цифру в базе сразу хранить, а не пересчитывать каждый раз.
 
 
1Bot
Отправлено: 26 сентября 2013 — 19:08
Post Id



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


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




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


Посмотрите на структуру файла с информацией о сообщениях темы в первом сообщении темы есть массив
CODE:
[pinmsg] => Array // массив прикрепленных к верху сообщений в порядке вывода


соответственно
CODE:
m = count( $pinmsg );
 
 
CAB
Отправлено: 26 сентября 2013 — 19:11
Post Id



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


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




1Bot, NordWest, Вы не уловили суть проблемы. Ну это понятно, я тоже потратил кучу времени пока не понял. Проблема не в учёте приклеплённых сообщений, они учитываются. Проблема в том, что если прикреплённое сообщение старше искомого, то одну страницу оно не занимает - оно там уже и так было изначально.
Посмотрите мои наработки http://exbb.info/community/topic...=6&topic=368
 
 
NordWest
Отправлено: 26 сентября 2013 — 19:11
Post Id



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


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




1Bot пишет:
Посмотрите на структуру файла с информацией о сообщениях темы в первом сообщении темы есть массив
Я же говорю - невнимателен. Пропустил. Однако
Сейчас попробую реализовать предложенный вами алгоритм.
(Добавление)
CAB
Обязательно посмотрю и ваши наработки, но похоже уже завтра...

PS: а чего никто топикстартера не ткнул в темы, где эта проблема обсуждалась? Я думал это новый глюк, а оказывается это уже давняя головная боль.
 
 
CAB
Отправлено: 26 сентября 2013 — 19:32
Post Id



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


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




NordWest пишет:
а чего никто топикстартера не ткнул в темы, где эта проблема обсуждалась? Я думал это новый глюк, а оказывается это уже давняя головная боль
Лично у меня просто нет решений для ExBB FM 1.0 Final - те наработки для RC1, которые кому-то надо адаптировать для финала.
 
 
NordWest
Отправлено: 26 сентября 2013 — 19:41
Post Id



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


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




Ясно, попробую адаптировать в меру сил и возможностей.
(Добавление)
Применил только алгоритм предложенный 1Bot - вроде правильно работает.

Открываем файл forums.php в котором ищем

CODE:
$totalpages = ceil($totalposts/intval($fm->user['posts2page']));


которую меняем кодом

CODE:
if ($totalposts > $fm->user['posts2page'])
{
$threads = $fm->_Read('forum'.$forum_id.'/'.$topic_id.'-thd.php',FALSE);
$threads_keys = array_keys($threads);
$f_thread = $threads [$threads_keys[0]];
$pinmsg = (isset($f_thread['pinmsg'])) ? count( $f_thread['pinmsg'] ) : 0 ;
$totalpages = 1 + floor(($totalposts-$pinmsg)/(intval($fm->user['posts2page'])-$pinmsg));
}
else {$totalpages = ceil($totalposts/intval($fm->user['posts2page']));}


Код вероятно не идеален. Скорее всего можно было проще получить количество прикреплённых постов, но главное что я так или иначе до этой цифры добрался.
У меня работает верно, но у меня форум крохотный и постов мало....
 
 
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Решение проблем »

> Похожие темы: Неправильный переход на последнюю страницу
Темы Форум Информация о теме Обновление
Доработка стандартного мода объявлений на форуме
Позволяет вывести заголовки нескольких новостей на главную страницу и т п.
Модификации и дополнения Ответов: 58
Автор темы: yura3d
31 марта 2017 — 16:54
Автор: Lord Dewl
Дополнение: Пагинатор как на шкурке Invision2 от SkinStore
Изменение внешнего вида ссылок перехода по страницам
Модификации и дополнения Ответов: 38
Автор темы: electron
22 января 2012 — 16:00
Автор: BON
Не работает админпанель
Установил последнюю версию форума. Не работает админпанель
Решение проблем Ответов: 9
Автор темы: FlyRus
2 июня 2013 — 18:08
Автор: electron
Переход к последнему посту
Наблюдается глюк с переходом на последний пост.
Решение проблем Ответов: 9
Автор темы: Zeg
1 апреля 2009 — 19:10
Автор: yura3d
Перспективы дальнейшего развития
Отказ от ExBB FM 1.0 и переход на ExBB FM 1.1 и ExBB 2.0
Новости Ответов: 217
Автор темы: yura3d
24 июля 2012 — 16:59
Автор: electron
 



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




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

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

[Script Execution time: 0.0986]     [ ]