Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.3 » Переход на последнюю странице при клике на обновившуюся тему

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

NecroHill



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
на первой странице доски есть колонка "Последние сообщения" где выводится дата, тема и автор последнего сообщения.
так вот, при клике на тему мы переходим в нее, НО, если тема многостраничная - мы попадаем не на последнюю страницу, а на первую...
как сделать чтоб переходили на последнюю?

Всего записей: 803 | Зарегистр. 23-12-2001 | Отправлено: 20:57 05-04-2002
yurezg2



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
http://forum.ru-board.com/topic.cgi?forum=23&topic=0311#1
тут обсуждаем

----------
http://www.krasnoznamensk.ru - это мой город!

Всего записей: 623 | Зарегистр. 27-06-2001 | Отправлено: 11:01 08-04-2002
NecroHill



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ок
но та тема позже создана была...

Всего записей: 803 | Зарегистр. 23-12-2001 | Отправлено: 11:33 08-04-2002
NecroHill



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
yurezg2
и там немного о другом речь идет...там все изменения в Sources/Forum.pm
а мне нужно знать какие изменения в Board.pm сотворить, чтоб к ссылке:

Код:
? qq[<a href='$iB::INFO->{'BOARD_URL'}/ikonboard.$iB::INFO->{'CGI_EXT'}?s=$iB::SESSION;act=ST;f=$this_forum->{'FORUM_ID'};t=$this_forum->{'L_TOPIC_ID'}' class='misc'>$this_forum->{'L_TOPIC_TITLE'}</a>]

в конец прикрутить:

Код:
;st=$maxpages'  

Всего записей: 803 | Зарегистр. 23-12-2001 | Отправлено: 13:52 09-04-2002
yurezg2



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
в forum.pm вот как она определяется

Код:
 
my $Pages = ($topic->{'TOPIC_POSTS'} + 1) / $iB::INFO->{'DISPLAY_MAX_POSTS'};
...........
my $maxpages = ($Pages - 1) * $iB::INFO->{'DISPLAY_MAX_POSTS'};
$maxpages    = 0 if $maxpages < 0;
 

что то типа того
если получится - крикни

----------
http://www.krasnoznamensk.ru - это мой город!

Всего записей: 623 | Зарегистр. 27-06-2001 | Отправлено: 17:10 09-04-2002
NecroHill



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
yurezg2
угу, но кроме этого необходимо определить (если в Board.pm это запихнуть) $Pages, $IN, $topic и т.д.

Всего записей: 803 | Зарегистр. 23-12-2001 | Отправлено: 16:59 10-04-2002
yurezg2



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NecroHill

Цитата:
необходимо определить (если в Board.pm это запихнуть) $Pages, $IN, $topic  и т.д.

а в чем проблема то?
там же написано прямо в этом форум.пм
копипейсти - не хочу
 
my $IN  = { DB => "", DATA => "", PIN => "", @_,};
my $topic   = $IN->{'DATA'};
my $Pages = ($topic->{'TOPIC_POSTS'} + 1) / $iB::INFO->{'DISPLAY_MAX_POSTS'};


----------
http://www.krasnoznamensk.ru - это мой город!

Всего записей: 623 | Зарегистр. 27-06-2001 | Отправлено: 10:01 11-04-2002
NecroHill



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
понятное дело...только тольку от этого нету

Всего записей: 803 | Зарегистр. 23-12-2001 | Отправлено: 10:31 11-04-2002
yurezg2



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
странно
ошибка какая то или что?
о!
вспомнил
есть такой хак - last post
ссылка на него - наверху
вернее на обсуждение
оттуда методу передрать и все
там же ссылка тоже рисуется
пряд до самого последнего поста
оттуда сдери и если получится расскажи нам

----------
http://www.krasnoznamensk.ru - это мой город!

Всего записей: 623 | Зарегистр. 27-06-2001 | Отправлено: 11:00 11-04-2002
NecroHill



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
вот первоначальный вид куска с ссылкой (из Board.pm):

Код:
 
sub render_forum {
    my ($obj, $this_forum) = @_;
     
    # Double check the validity of the BD
    next unless defined $this_forum->{'FORUM_ID'};
 
    if ($this_forum->{'FORUM_VIEW_THREADS'} ne '*') {
        next unless grep { $_ == $iB::MEMBER->{'MEMBER_GROUP'} } (split /,/,$this_forum->{'FORUM_VIEW_THREADS'});
    }
 
    $this_forum->{'N_LINK'} = ($this_forum->{'L_TOPIC_TITLE'} and defined $this_forum->{'L_TOPIC_ID'})
                            ? qq[<a href='$iB::INFO->{'BOARD_URL'}/ikonboard.$iB::INFO->{'CGI_EXT'}?s=$iB::SESSION;act=ST;f=$this_forum->{'FORUM_ID'};t=$this_forum->{'L_TOPIC_ID'}' class='misc'>$this_forum->{'L_TOPIC_TITLE'}</a>]
                            : $Boards::lang->{'f_none'};
 

 
вот со вставленными фрагментами из Forum.pm (красным помечено)

Код:
 
sub render_forum {
    my ($obj, $this_forum) = @_;
my $IN  = { DB => "", DATA => "", PIN => "", @_,};  
my $topic   = $IN->{'DATA'};  
my $Pages = ($topic->{'TOPIC_POSTS'} + 1) / $iB::INFO->{'DISPLAY_MAX_POSTS'};
 
    my $maxpages = ($Pages - 1) * $iB::INFO->{'DISPLAY_MAX_POSTS'};
    $maxpages    = 0 if $maxpages < 0;
   
    # Double check the validity of the BD
    next unless defined $this_forum->{'FORUM_ID'};
 
    if ($this_forum->{'FORUM_VIEW_THREADS'} ne '*') {
        next unless grep { $_ == $iB::MEMBER->{'MEMBER_GROUP'} } (split /,/,$this_forum->{'FORUM_VIEW_THREADS'});
    }
 
    $this_forum->{'N_LINK'} = ($this_forum->{'L_TOPIC_TITLE'} and defined $this_forum->{'L_TOPIC_ID'})
                            ? qq[<a href='$iB::INFO->{'BOARD_URL'}/ikonboard.$iB::INFO->{'CGI_EXT'}?s=$iB::SESSION;act=ST;f=$this_forum->{'FORUM_ID'};t=$this_forum->{'L_TOPIC_ID'};st=$maxpages' class='misc'>$this_forum->{'L_TOPIC_TITLE'}</a>]
                            : $Boards::lang->{'f_none'};
 

 
а вот ошибка, которую выдает:
Ikonboard has exited with the following error:  
 
Can't use string ("") as a HASH ref while "strict refs" in use
 
This error was reported at: Sources/Boards.pm line 394.  
 
а в 394 строке находится:
my $Pages = ($topic->{'TOPIC_POSTS'} + 1) / $iB::INFO->{'DISPLAY_MAX_POSTS'};
 
вот собсно и все.  
может кто нибудь поможет разобраться?

Всего записей: 803 | Зарегистр. 23-12-2001 | Отправлено: 11:35 11-04-2002 | Исправлено: NecroHill, 11:38 11-04-2002
Guest

BANNED
Редактировать | Цитировать | Сообщить модератору
У кого есть мысли по сабжу?

Отправлено: 02:55 16-04-2002
yurezg2



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NecroHill
можно даже к последему сообщению переходить
внутри в коде все они помечены
типа
Код:
<a name="entry5774">

то есть ссобщение 5774, правда, эта нумерация сквозная на всем форуме


----------
http://www.krasnoznamensk.ru - это мой город!

Всего записей: 623 | Зарегистр. 27-06-2001 | Отправлено: 09:49 27-04-2002
NecroHill



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
yurezg2
это понятно что можно, как это в коде реализовать?

Всего записей: 803 | Зарегистр. 23-12-2001 | Отправлено: 16:50 28-04-2002
yurezg2



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
может скоро будет решение
а по этому поводу хочется сказать что было бы интересно видеть
а) на страницу со списком форумов в "последнее обновление" линк вел на посл страницу или посл. сообщение
б) тоже самое при рассылке писем с уведомлением о обновлении темы

----------
http://www.krasnoznamensk.ru - это мой город!

Всего записей: 623 | Зарегистр. 27-06-2001 | Отправлено: 09:37 30-04-2002
zapimir



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Хак для iB 3.0.x
Открытие последней страницы многостраничной темы с главной страницы форума.
(с) zapimir
 
Открыть файл /Sources/Topic.pm
Найти строки

Код:
    ###################################
    # Generate the forum page span links
    ####################################

и после них добавить

Код:
if ($iB::IN{'st'} && $iB::IN{'st'} =~ /\D/) {
    $iB::IN{'st'}=int($obj->{'TOPIC'}->{'TOPIC_POSTS'} / $iB::INFO->{'DISPLAY_MAX_POSTS'})* $iB::INFO->{'DISPLAY_MAX_POSTS'};
    $First=$iB::IN{'st'}||0;
    }

 
 
Найти

Код:
my $Cnt = 0;

и добавить после него

Код:
my $Pcnt = scalar @{$total_posts};

 
Потом найти

Код:
# Do we have a signature to add?

и после него поставить

Код:
if (--$Pcnt == 1) {$Row->{'LAST_MES_LINK'} = '<a name="LM"></a>';}
else {$Row->{'LAST_MES_LINK'} = ''}

 
Всё, теперь любая ссылка в форуме с параметром st=LM будет вести на последнюю страницу темы, вместо LM можно использовать любое слово, например, st=GoToLastMes даст аналогичный результат.
А внутрення ссылка #LM ведет к предпоследнему сообщению (чтобы она вела к последнему нужно исправить --$Pcnt == 1 на --$Pcnt == 0
 
Теперь добавим этот параметр в ссылки на главной странице.
Открыть файл /Sources/Boards.pm
Найти текст

Код:
act=ST;f=$this_forum->{'FORUM_ID'};t=$this_forum->{'L_TOPIC_ID'}

и заменить его на  

Код:
act=ST;f=$this_forum->{'FORUM_ID'};t=$this_forum->{'L_TOPIC_ID'};st=LM#LM

 
Открыть файл /Skin/Default/TopicView.pm
Найти там

Код:
<!--Begin Msg Number $data->{'POST'}->{'POST_ID'}-->

и добавить после него  

Код:
$data->{'POST'}->{'LAST_MES_LINK'}

 
В действии хак можно посмотреть здесь http://f1plus.com.ua/forum/ikonboard.cgi

Всего записей: 651 | Зарегистр. 28-10-2001 | Отправлено: 16:15 03-05-2002
yurezg2



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
спасибо!

Цитата:
Всё, теперь любая ссылка в форуме с параметром st=LM будет вести на последнюю страницу темы, вместо LM можно использовать любое слово, например, st=GoToLastMes даст аналогичный результат.  

вот это приятное решение!.
а как это пририсовать к линку на тему который приходит в письме с уведомлением о новом сообщении в подписанной теме?

----------
http://www.krasnoznamensk.ru - это мой город!

Всего записей: 623 | Зарегистр. 27-06-2001 | Отправлено: 12:27 05-05-2002
zapimir



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
а как это пририсовать к линку на тему который приходит в письме с уведомлением о новом сообщении в подписанной теме?

Просто найти нужный URL и добавить после номера темы ;st=LM#LM
В том-то и прикол моего хака, т.к. изменен сам скрипт выводящий темы, и вид ссылки не зависит от количества страниц в теме.

Всего записей: 651 | Зарегистр. 28-10-2001 | Отправлено: 13:59 05-05-2002 | Исправлено: zapimir, 14:03 05-05-2002
VovanV



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще стоит добавить при выводе подкатегорий на главной странице форума.

Всего записей: 398 | Зарегистр. 22-04-2002 | Отправлено: 02:42 06-05-2002
NecroHill



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
zapimir
молодца!!!  
спасибо!

Всего записей: 803 | Зарегистр. 23-12-2001 | Отправлено: 13:10 06-05-2002
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.3 » Переход на последнюю странице при клике на обновившуюся тему


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru