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

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

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

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

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

YourAdmin



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как-то увидел у Ausw на форуме (кажеться UBB) такую фичу - показываеться самая популярная тема по количеству просмотров. Ну вот решил написать такую же штучку под IkonBoard. Вроде получилось
 
Смотрим. Открываем topic.cgi  
Ищем
Код:
 
if (($processed_data eq "") || ($processed_data !~ m!\|!)) { &error("Missing Data&Data as corrupted on the server. Please go back and try again"); }
        open(FILE, ">$filetoopen");
         print FILE $processed_data;
        close(FILE);
        undef $processed_data;
        my $file = "$ikondir" . "forum$inforum/$intopic.pl";
        open(MSG, ">$file");
        print MSG $linetokeep;
        close(MSG);
        }
 

 
Добавляем под этим кодом

Код:
 
############################ Самая популярная тема
 
    $filetoopen = "$ikondir" . "mostpop.cgi";
    open (MOST, "$filetoopen");
    @sod = <MOST>;
    close (MOST);
 
   
   foreach $mostpop (@sod) {
   ($forumpop, $topicpop, $topicpoptitle, $viewpop, $timepop, $memberpop) = split(/\|/, $mostpop);
   chomp $mostpop;}
   
 if ($threadviews >= $viewpop) {
 
 $timepop = time;
 
 $filetomake = "$ikondir" . "mostpop.cgi";
 open (UP, ">$filetomake");
 print UP "$inforum|$topicid|$topictitle|$threadviews|$timepop|$inmembername";  
 close (UP);
}    
 
############################ Самая популярная тема
 

 
Сохраняем topic.cgi и можно его закрыть.
Открываем наш любимый ikonboard.cgi
Идем в самый конец и находим

Код:
 
print header('text/html; charset=windows-1251');
&output(
-Title   => $boardname,  
-ToPrint => $output,  
-Version => $versionnumber  
);
 

 
Перед этим кодом добавляем

Код:
 
############# Самая популярная тема
 
    $filetoopen = "$ikondir" . "mostpop.cgi";
    open (MOST, "$filetoopen");
    @sod = <MOST>;
    close (MOST);
 
   
   foreach $mostpop (@sod) {      
   ($forumpop, $topicpop, $topicpoptitle, $viewpop, $timepop, $memberpop) = split(/\|/, $mostpop);
   chomp $mostpop; }
   
$timepop = &dateformat("$timepop");  
 
$output .= qq~
<br><table border="0" width="$tablewidth" align="center" cellpadding="0" cellspacing="0"><tr><td style="BORDER-TOP: gray 1px solid; BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid" align="left">
<font size="1" face="$font">&nbsp;Самая популярная тема:
<a href="$threadprog?forum=$forumpop&topic=$topicpop">$topicpoptitle</a>
<br>&nbsp;Просмотров: $viewpop
</td>
<td align="left" style="BORDER-TOP: gray 1px solid; BORDER-BOTTOM: gray 1px solid; BORDER-RIGHT: gray 1px solid">
<font face="$font" size="1">Последним просмотрел: $memberpop<br>
Время: $timepop
</tr></table>~;
 
############# Самая популярная тема
 

 
Вот и весь хак. Заходите в любую тему, а потом на ikonboard.cgi
Тестируйте и заценивайте. Просьба ваши мнения в эту тему.
 
Добавлено
А, кстати, если не хотите сразу ставить, то можете заценить хак в действии.
FlameForum
Смотрите в самом низу. ОК?

Всего записей: 156 | Зарегистр. 08-12-2001 | Отправлено: 20:05 21-06-2002
Ausw



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
вот это уже очень интересный и полезный хак
наравне с предыдущим будет вообще рулез
 
офф,
Цитата:
Как-то увидел у Ausw на форуме (кажеться UBB)  
эт ты где ubb увидел ?   у мя его никада и не было


----------
Be High.

Всего записей: 7371 | Зарегистр. 12-07-2001 | Отправлено: 20:39 21-06-2002
Grey2002



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

----------
Мой Блог

Всего записей: 1325 | Зарегистр. 24-12-2001 | Отправлено: 04:11 22-06-2002
ivank



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А я опять же настаиваю, что это лишь декоротивный элемент и пользы от него если не ноль, то очень немного.

----------
ivank
http://ivank.oszone.net

Всего записей: 553 | Зарегистр. 24-01-2002 | Отправлено: 09:02 22-06-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ivank
Ты прав... Имхо...
 
Добавлено
Хотя уже лучше...

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 11:59 22-06-2002
YourAdmin



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ребята, я ночью на локалхосте посидел и этот хак усовершенствовал. Скоро опубликую.
 
Предложение к batva:
Может мне присвоить статус "Писатель хаков?"
 
Добавлено
Вот. смотрите тут
http://forum.ru-board.com/topic.cgi?forum=21&topic=1621#1

Всего записей: 156 | Зарегистр. 08-12-2001 | Отправлено: 16:14 22-06-2002
batva



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

Код:
 
 foreach $mostpop (@sod) {  
   ($forumpop, $topicpop, $topicpoptitle, $viewpop, $timepop, $memberpop) = split(/\|/, $mostpop);  
   chomp $mostpop;}
 

 
сначало ты сплитуешь, а потом делаешь chomp, наверно нужно наоборот.

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 00:08 23-06-2002
alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
batva
Нет разницы, он ведь после сплита все равно делает chomp для последнего елемента с \n. Поэтому имхо траблов быть не должно

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 11:59 23-06-2002
YourAdmin



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
batva, ну так как, может присвоить мне статус "Писатель хаков"? Тогда обещаю, что все new хаки буду здесь публиковать + помогаь пополнять файловый архив.

Всего записей: 156 | Зарегистр. 08-12-2001 | Отправлено: 16:08 23-06-2002
Alexander Ipp



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

Цитата:
batva, ну так как, может присвоить мне статус "Писатель хаков"? Тогда обещаю, что все new хаки буду здесь публиковать + помогаь пополнять файловый архив.  

1. НА МЫЛО! А то так можно статус ANNED вместо писателя хаков получить.
2. По-моему, файловый архив пополнять никто особо не собирается...
alexei
Хм, а если сначала /n прокрадётся?

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 19:31 23-06-2002
YourAdmin



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alexander Ipp, ну и какие проблемы?
Сам возьми и переделай! Там же только одну строчку поменять нужно, и всё

Всего записей: 156 | Зарегистр. 08-12-2001 | Отправлено: 20:22 23-06-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YourAdmin
А оно мне надо?
Надо было бы, я бы уже сто раз такую фичу прикрутил, открутил и снова прикрутил.

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 20:26 23-06-2002
YourAdmin



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

Цитата:
Хм, а если сначала /n прокрадётся?  

не /n а \n

Всего записей: 156 | Зарегистр. 08-12-2001 | Отправлено: 20:28 23-06-2002
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexei

Цитата:
Нет разницы, он ведь после сплита все равно делает chomp для последнего елемента с \n.  

 
ну вы ребята даете.
 
попробую более доходчиво.
 

Код:
 
$filetoopen = "$ikondir" . "mostpop.cgi";  
    open (MOST, "$filetoopen");  
    @sod = <MOST>;  
    close (MOST);
 
 
 
итак, в массиве @sod у нас каждый элемент, это строка файла mostpop.cgi
 
строка заканчивается на \n
 
далее

Код:
 
foreach $mostpop (@sod) {  
   ($forumpop, $topicpop, $topicpoptitle, $viewpop, $timepop, $memberpop) = split(/\|/, $mostpop);  
 

 
$mostpop это элемент массива @sod, тобишь строка, которая заканчивается на \n
После сплита в переменной $memberpop получается некое значение плюс \n
 
И потом  
 

Код:
 
chomp $mostpop;}  
 

 
в данном случае резать конечный перевод строки в $mostpop  нет смысла, ибо $mostpop  уже рассплитована.
 
 
 
далее.
посмотрим еще раз на этот кусок кода.
 

Код:
 
 foreach $mostpop (@sod) {  
   ($forumpop, $topicpop, $topicpoptitle, $viewpop, $timepop, $memberpop) = split(/\|/, $mostpop);  
   chomp $mostpop;}  
     
 
 

 
что мы тут видим?
Ха, видим перебор массива, сплитование строки, и возврат к итерации.
 
если в массиве несколько элементов, то при выходе всегда получаем расплитованный последний элемент (последнию строку файла mostpop.cgi), тогда позвольте, а зачем нам тогда гонять цикл????
Не проще взять сразу последний элемент массива и его сплитовать?
 
Далее, судя по коду, в файле всего то одна строка, всегда.
Тогда тем более не понятно, зачем вообще нужны эти выкрутасы c циклами и массивом?
 

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 23:33 23-06-2002
alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
batva
Так я о чем

Цитата:
Далее, судя по коду, в файле всего то одна строка, всегда.
Тогда тем более не понятно, зачем вообще нужны эти выкрутасы c циклами и массивом?

Гы, таки да. Я просто в код не вчитывался

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 10:44 24-06-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
batva
Да ладно, не пинай его так, всё-таки человек только учится.

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 11:07 24-06-2002
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Хак. Самая популярная тема


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru