ivank
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Первым делом создаёте диру cgi-bin/ikonboard/cusomviews, и вешаете на неё права 777. Затме открывате ikonboard.cgi, и находите там нечто вроде: Код: ### Open up the allforums file. $filetoopen = "$ikondir" . "data/allforums.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen") or die "Вы создавали форумы?"; flock FILE,1; @forums = <FILE>; close(FILE); foreach $forum (@forums) { #start foreach @forums chomp $forum; ($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$forum); $rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forummoderator|$htmlstate|$idmbcodestate|$privateforum|$startnewthreads|$lastposter|$lastposttime|$threads|$posts|$forumgraphic|$forumid"); push (@rearrangedforums, $rearrange); } # end foreach (@forums) @finalsortedforums = sort numerically(@rearrangedforums); | И меняете всё это дело на: Код: $filetoopen = "$ikondir" . "data/allforums.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen") or die "Вы создавали форумы?"; flock FILE,1; @forums = <FILE>; close(FILE); if( -e "${ikondir}customviews/$inmembername.cgi" ) { %id2data = (); foreach $forum( @forums ) { ($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$forum); $id2data{$forumid} = $forum; } open( CV, "${ikondir}customviews/$inmembername.cgi" ); @cv = <CV>; close( CV ); $output .= ''; $categoryplace = 1; $category = 'Непонятно какая категория'; @sortedforums = (); foreach $cur( @cv ) { if( $cur =~ /category=(.+)/i ) { $category = $1; ++$categoryplace; } elsif( $cur =~ /(\d+)(=(.*))?/ ) { #getting info about forum ($forumid, $dummy, $dummy, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$id2data{$1}); if( $2 ) { $forumdescription = $3; } push( @finalsortedforums, "$categoryplace|$category|$forumname|$forumdescription|$forummoderator|$htmlstate|$idmbcodestate|$privateforum|$startnewthreads|$lastposter|$lastposttime|$threads|$posts|$forumgraphic|$1" ); } } } else { foreach $forum (@forums) { #start foreach @forums chomp $forum; ($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$forum); $rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forummoderator|$htmlstate|$idmbcodestate|$privateforum|$startnewthreads|$lastposter|$lastposttime|$threads|$posts|$forumgraphic|$forumid"); push (@rearrangedforums, $rearrange); } # end foreach (@forums) @finalsortedforums = sort numerically(@rearrangedforums); } | Это всё в board.cgi. В общем-то это весь хак Только надо ещё добавить поле в профиль для редактирование custom-вида, ну и помошь... Открываете profile.cgi, ищете? Код: $avatarhtml = qq~ <script language="javascript"> function showimage() { //alert("$imagesurl/avatars/"+document.creator.useravatar.options[document.creator.useravatar.selectedIndex].value+".gif"); document.images.useravatars.src="$imagesurl/avatars/"+document.creator.useravatar.options[document.creator.useravatar.selectedIndex].value+".gif"; } </script> <tr> <td class=bgc1 bgcolor=#EBEFF5 valign=top><b>Àâàòð:</b><br>Âû ìîæåòå âûáèðàòü êàðòèíêó, êîòîðàÿ áóäåò ïîêàçàíà ïîä Âàøèì èìåíåì, êîãäà Âû îòïðàâèòå ñîîáùåíèå</td> <td class=bgc1 bgcolor=#EBEFF5> <select name="useravatar" size=6 onChange="showimage()"> $selecthtml </select> <img src="$imagesurl/avatars/$currentface.gif" name="useravatars" width="64" height="64" border=0 hspace=15> </td> </tr> ~; } # end avatar if | И за ним добавляете: Код: if( ! -e "${ikondir}customviews/$inmembername.cgi" ) { $has_customview = ''; $customview = ''; $filetoopen = "$ikondir" . "data/allforums.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen") or die "Âû ñîçäàâàëè ôîðóìû?"; flock FILE,1; @forums = <FILE>; close(FILE); foreach $forum (@forums) { chomp $forum; ($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$forum); $dummy_value = $categoryplace*100+$forumid; $rearrange = ("$dummy_value|$categoryplace|$category|$forumname|$forumdescription|$forummoderator|$htmlstate|$idmbcodestate|$privateforum|$startnewthreads|$lastposter|$lastposttime|$threads|$posts|$forumgraphic|$forumid"); push (@rearrangedforums, $rearrange); } @finalsortedforums = sort numerically(@rearrangedforums); $prev_cat = 0; foreach $sortedforums (@finalsortedforums) { ($dummy_value,$categoryplace, $category, $forumname, $forumdescription, $forummoderator, $htmlstate, $idmbcodestate, $privateforum, $startnewthreads, $lastposter, $lastposttime, $threads, $posts, $forumgraphic, $forumid) = split(/\|/,$sortedforums); if( $prev_cat ne $categoryplace ) { $customview .= "\n \n"."category=$category\n"; $prev_cat = $categoryplace; } $customview .= "$forumid\n"; } } else { $has_customview = 'checked'; $filetoopen = "${ikondir}customviews/$inmembername.cgi"; open( FILE, $filetoopen ); @cv_lines = <FILE>; close( FILE ); $customview = ''; foreach $cv( @cv_lines ) { $customview .= "$cv\n"; } } | После Код: <tr> <td class=bgc1 bgcolor=#EBEFF5><b>Подпись:</b><br>Введите Вашу подпись. Можно ввести только 3 строки. <br>Вы можете использовать тэги IkonCode:<br> Выделенный, Наклонный и http://www.yourdomain.com<p>Не используйте HTML</td> <td class=bgc1 bgcolor=#EBEFF5><textarea size=20 name="newsignature" cols="40" rows="4">$signature</textarea></td> </tr> | И после добавляете: Код: <tr> <td class=bgc1 bgcolor=#EBEFF5><b>Настраиваемый вид форума.</b><br>Справку и номера форумов можно найти <a href="misc.cgi?action=customview">здесь</a>.</td> <td class=bgc1 bgcolor=#EBEFF5><input type=checkbox name="has_customview" $has_customview>Собственный вид форума.<br><textarea size=20 name="customview" cols="40" rows="15">$customview</textarea></td> </tr> | Ищете: Код: $newpassword = $query -> param('newpassword'); $newshowemail = $query -> param('newshowemail'); $newhomepage = $query -> param('newhomepage'); $newicqnumber = $query -> param('newicqnumber'); $newlocation = $query -> param('newlocation'); $newinterests = $query -> param('newinterests'); $newtimedifference = $query -> param('newtimedifference'); $newemailaddress = $query -> param('newemailaddress'); $newsignature = $query -> param('newsignature'); $inuseravatar = $query -> param('useravatar'); | И после добавляете: Код: $has_customview = $query -> param('has_customview'); $customview = $query -> param('customview'); | После: Код: $newsignature = &unHTML("$newsignature"); $inuseravatar = &cleaninput("$inuseravatar"); $newpassword = &cleanarea("$newpassword"); $newshowemail = &cleanarea("$newshowemail"); $newhomepage = &cleanarea("$newhomepage"); $newicqnumber = &cleanarea("$newicqnumber"); $newlocation = &cleanarea("$newlocation"); $newinterests = &cleanarea("$newinterests"); $newtimedifference = &cleanarea("$newtimedifference"); $newemailaddress = &cleanarea("$newemailaddress"); | Добавляете: Код: if( $has_customview ne 'on' ) { if( -e "${ikondir}customviews/$inmembername.cgi" ) { unlink "${ikondir}customviews/$inmembername.cgi"; } } else { $filetoopen = ">${ikondir}customviews/$inmembername.cgi"; $customview =~ s/\n/\n\n/; open( FILE, $filetoopen ); print FILE $customview; close( FILE ); } | С profile.cgi закончили. Теперь открываете misc.cgi, и после Код: if (!$inmembername) { $inmembername = "Guest"; } | Добавляете: Код: ### customview ### if( $action eq 'customview' ) { &customview; } | В самом конце файла дописываете: Код: sub customview { $filetoopen = "$ikondir" . "data/allforums.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen") or die "Вы создавали форумы?"; flock FILE,1; @forums = <FILE>; close(FILE); foreach $forum (@forums) { chomp $forum; ($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$forum); $dummy_value = $categoryplace*100+$forumid; $rearrange = ("$dummy_value|$categoryplace|$category|$forumname|$forumdescription|$forummoderator|$htmlstate|$idmbcodestate|$privateforum|$startnewthreads|$lastposter|$lastposttime|$threads|$posts|$forumgraphic|$forumid"); push (@rearrangedforums, $rearrange); } @finalsortedforums = sort numerically(@rearrangedforums); $forums_list = ''; $prev_cat = 0; foreach $sortedforums (@finalsortedforums) { ($dummy_value,$categoryplace, $category, $forumname, $forumdescription, $forummoderator, $htmlstate, $idmbcodestate, $privateforum, $startnewthreads, $lastposter, $lastposttime, $threads, $posts, $forumgraphic, $forumid) = split(/\|/,$sortedforums); if( $prev_cat ne $categoryplace ) { $prev_cat = $categoryplace; $forums_list .= " \n$category\n"; } if( length( $forumid ) < 2 ) { $forumid = " $forumid"; } $forums_list .= " $forumid $forumname\n"; } &title; $output .= qq~ <center><table width-"98%"><tr><td> Справки по настройке главной страницы пока нет... Ждите, ждите, ждите... <br><br><br><pre>$forums_list</pre> </td></tr></table></center> ~; print header('text/html; charset=windows-1251'); &output( -Title => "$boardname", -ToPrint => $output, -Version => $versionnumber ); } | Это всё. оффтоп: Ипп говорил у кого-то есть хак фильтра на форумс.цги... Не поделиться ли он. Влом самому писать (А надо...) Добавлено Половина форматирования съехала. Батва, сделай пожалуйста табуляцию равной четырём пробелам, а то нервирует...
|