Итак, я все-таки нашел хак объявлений в отдельном разделе...
выкладываю, может, кому понадобится... перевод и адаптация под Русский Иконборд мои...
копирайты не помню.... сорри...
Итак, создаем файл [B]forumannounce.cgi[/B]
<p>#!/usr/bin/perl<p><br>use CGI::Carp "fatalsToBrowser"; # Output errors to browser<br>use CGI qw(:standard); # Saves loads of work<br>$CGI::POST_MAX=1024 * 150; # limit post data<br>$CGI::DISABLE_UPLOADS = 1; # Disable uploads<br>$CGI::HEADERS_ONCE = 1; # Kill redundant headers<p>eval {<br>($0 =~ m,(.*)/[^/]+,) and unshift (@INC, "$1");<br>($0 =~ m,(.*)\[^\]+,) and unshift (@INC, "$1");<br>require "ikon.lib"; # Require ikonboard ()<br>require "data/progs.cgi"; # Require prog names<br>require "data/boardinfo.cgi";# Require board info<br>require "data/styles.cgi"; # Require styles info<br>};<br>if ($@) {<br> print header(-charset=>$forumcharset); print start_html(-title=>"Ошибка Ikonboard!");<br> print "Невозможно найти файлы: $@\nЕсли у Вас установлен Windows NT, может потребоваться прописать полный путь в каждом require-операторе в каждом скрипте";<br> print end_html; exit;<br>}<p>$|++; # Unbuffer the output<p>#################--- Начало ---###################<p>$thisprog = "forumannounce.cgi";<p>$query = new CGI;<p>$cookiepath = $query->url(-absolute=>1); <br>$cookiepath =~ s/$thisprog//sg; <p>@params = $query->param;<br>foreach $param(@params) {<br> $theparam = $query->param($param);<br> $theparam = &cleaninput("$theparam");<br> ${$param} = $theparam;<br>}<p>$inmembername = $membername;<br>$inpassword = $password;<br>$inannouncementtitle = $announcementtitle;<br>$inannouncementpost = $announcementpost;<p><br>if (! $inmembername) { $inmembername = cookie("amembernamecookie"); }<br>if (! $inpassword) { $inpassword = cookie("apasswordcookie"); }<p>if ($inmembername eq "") {<br> $inmembername = "Guest";<br> }<br> else {<br> &getmemberstime("$inmembername");<br> }<p><p>### Print Header for the page.<p> print header(-charset=>$forumcharset);<p> &title;<p> $output .= qq~<br><table cellpadding=0 cellspacing=0 border=0 width=$tablewidth align=center><br><tr><td width=30% rowspan=2><img src="$imagesurl/images/$boardlogo" border=0></td><br><td valign=top align=left><font face="$font" color=$fontcolormisc size=2><br> <img src="$imagesurl/images/closedfold.gif" border=0><a href="$forumsummaryprog"> $boardname</a><br><br> <img src="$imagesurl/images/bar.gif" border=0><img src="$imagesurl/images/closedfold.gif" border=0> <a href="$boardurl/forums.cgi?forum=$inforum"> $forumname</a><br><br> <img src="$imagesurl/images/bar.gif" border=0><img src="$imagesurl/images/openfold.gif" border=0> Объявления раздела</tr></table><br><p><table cellpadding=0 cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center><br><tr><td><table cellpadding=3 cellspacing=1 border=0 width=100%><br> ~;<br> <br>### Startactions<p><br>if ($action eq "delete") {<p> <br> if ($checked eq "yes") {<br> <br># Validate user<br> <br> &getmember("$inmembername");<br> <br> &moderator;<p> $cleartoedit = "no";<p> if (($membercode eq "ad") && ($inpassword eq $password)) { $cleartoedit = "yes"; }<br> if (($inmembmod eq "yes") && ($inpassword eq $password)) { $cleartoedit = "yes"; }<br> unless ($cleartoedit eq "yes") { $cleartoedit = "no"; }<br> <br> if ($cleartoedit eq "no") { &error("удалеении объявления&Вы не являетесь Модератором или Администратором, или Ваш пароль неверен"); } <br> <br> <br># Get the announcement to delete<br> <br> $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> $filetoopen = &stripMETA($filetoopen);<br> open(FILE, "$filetoopen") or die "Cannot locate the required file";<br> @announcements = <FILE>;<br> close(FILE);<br> <br># Write it back minus the one to delete.<br> <br> $count = 0;<br> <br> $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> $filetoopen = &stripMETA($filetoopen);<br> open(FILE, ">$filetoopen") or die "Cannot locate the required file";<br> flock (FILE, 2);<br> foreach $line (@announcements) {<br> chomp $line;<br> if ($count ne $number) {<br> print FILE "$line\n";<br> }<br> $count++;<br> }<br> close(FILE);<p> &doend("Объявление удалено");<br> <br> exit;<p><br> } # end checked delete<br> <br> else {<br> <br> &login("$thisprog?action=delete&number=$number&checked=yes&inforum=$inforum");<br> <br> } # end else<br> <br> } # end action<p><p><p> elsif ($action eq "add") {<p> <br> <br># Present the form<p> $output .= qq~<br><form action="$thisprog" method=post><input type=hidden name="action" value="addannouncement"><br><input type=hidden name="inforum" value="$inforum"><input type=hidden name="forumname" value="$forumname"><br><tr><td bgcolor=$miscbacktwo colspan=2 align=center><font face="$font" color=$fontcolormisc size=3><b>Добавление объявления</b></td></tr><br><tr><td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>Ник</font></td><br><td bgcolor=$miscbackone valign=middle><input type=text name="membername" value="$inmembername" size=30></a></td></tr><br><tr><td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>Пароль</font></td><br><td bgcolor=$miscbackone valign=middle><input type=password name="password" value="$inpassword" size=30></td></tr><br><tr><td bgcolor=$miscbackone valign=top width=30%><font face="$font" color=$fontcolormisc size=1><b>Заголовок объявления</b></font></td><br><td bgcolor=$miscbackone valign=middle><input type=text name="announcementtitle" size=60 maxlength=100></td></tr><br><tr><td bgcolor=$miscbackone valign=top width=30%><font face="$font" color=$fontcolormisc size=1><b>Объявление</b><br>Текст объявления<p>Если на форуме включены смайлы, Вы можете их использовать в объявлении.<p>Ikoncode будет преобразовываться автоматически.</font></td><br><td bgcolor=$miscbackone valign=middle><textarea cols=60 rows=15 name="announcementpost"></textarea></td></tr><br><tr><td bgcolor=$miscbacktwo valign=middle colspan=2 align=center><br><input type=Submit value=Отправить name=Submit onClick="return clckcntr();"> <input type="reset" name=Очистить></form></td></tr><br> ~; <br> <br> <br> } # end action<p><p><p><br> <br> elsif ($action eq "addannouncement") {<br> <br> $currenttime = time;<br> <br># Validate user<br> <br> &getmember("$inmembername");<br> &moderator;<p> $cleartoedit = "no";<p> if (($membercode eq "ad") && ($inpassword eq $password)) { $cleartoedit = "yes"; }<br> if (($inmembmod eq "yes") && ($inpassword eq $password)) { $cleartoedit = "yes"; }<br> unless ($cleartoedit eq "yes") { $cleartoedit = "no"; }<br> <br> if ($cleartoedit eq "no") { &error("Добавлении объявления в форум&Вы не являетесь Модератором или Администратором, или Ваш пароль неверен"); } <p># Check for blanks.<br> <br> if ($inannouncementpost eq "") { print header(); &error("Объявлении&Вы должны ввести объявление."); }<br> if ($inannouncementtitle eq "") { print header(); &error("Объявлении&Вы должны ввести заголовок объявления"); }<br> <br># Get the announcement file<br> <br> $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> $filetoopen = &stripMETA($filetoopen);<br> open(FILE, "$filetoopen");<br> @announcements = <FILE>;<br> close(FILE);<br> <br># Write it back with the new announcement at the top<br> <br> $newline = "$inannouncementtitle|$currenttime|$inannouncementpost";<br> chomp $newline;<br> <br> $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> $filetoopen = &stripMETA($filetoopen);<br> open(FILE, ">$filetoopen");<br> flock(FILE, 2);<br> print FILE "$newline\n";<br> foreach $line (@announcements) {<br> chomp $line;<br> print FILE "$line\n";<br> }<br> close(FILE);<br> <br> &doend("Объявление добавлено");<br> <br> } # end add announcement<br> <br> <br> <br> <br> elsif ($action eq "edit") {<p> <br> <br> # Get the announcement file<br> <br> $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> $filetoopen = &stripMETA($filetoopen);<br> open(FILE, "$filetoopen") or die "Cannot locate the required file";<br> @announcements = <FILE>;<br> close(FILE);<br> <br> # Get the announcement to edit<br> <br> $count = 0;<br> <br> foreach (@announcements) {<br> if ($count eq $number) {<br> ($announcementtitle, $notneeded, $announcementpost) = split(/\|/,$_);<br> }<br> $count++;<br> }<br> <br> # Clean the text area<br> <br> $announcementpost =~ s/\<p\>/\n\n/g;<br> $announcementpost =~ s/\<br\>/\n/g;<br> <br> # Present the form<p> $output .= qq~<br><form action="$thisprog" method=post><input type=hidden name="action" value="doedit"><br><input type=hidden name="number" value="$number"><input type=hidden name="inforum" value="$inforum"><br><input type=hidden name="forumname" value="$forumname"><br><tr><td bgcolor=$miscbacktwo colspan=2 align=center><font face="$font" color=$fontcolormisc size=3><b>Редактирование объявления</b></td></tr><br><tr><td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>Ник</font></td><br><td bgcolor=$miscbackone valign=middle><input type=text name="membername" value="$inmembername" size=30></a></td></tr><br><tr><td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>Пароль</font></td><br><td bgcolor=$miscbackone valign=middle><input type=password name="password" value="$inpassword" size=30></td></tr><br><tr><td bgcolor=$miscbackone valign=top width=30%><font face="$font" color=$fontcolormisc size=1><b>Заголовок объявления</b></font></td><br><td bgcolor=$miscbackone valign=middle><input type=text name="announcementtitle" value="$announcementtitle"size=60 maxlength=100></td></tr><br><tr><td bgcolor=$miscbackone valign=top width=30%><font face="$font" color=$fontcolormisc size=1><b>Объявление</b><br>Текст объявления<p>Если на форуме включены смайлы, Вы можете их использовать в объявлении.<p>Ikoncode будет преобразовываться автоматически.</font></td><br><td bgcolor=$miscbackone valign=middle><textarea cols=60 rows=15 name="announcementpost">$announcementpost</textarea></td></tr><br><tr><td bgcolor=$miscbacktwo valign=middle colspan=2 align=center><br><input type=Submit value=Отправить name=Submit onClick="return clckcntr();"> <input type="reset" name=Очистить></form></td></tr><br> ~; <br> <br> <br> } # end action<br> <p><br> elsif ($action eq "doedit") {<p> $currenttime = time;<br> <br># Make sure it's got all new lines converted<br> <br># Validate user<br> <br> &getmember("$inmembername");<br> &moderator;<p> $cleartoedit = "no";<p> if (($membercode eq "ad") && ($inpassword eq $password)) { $cleartoedit = "yes"; }<br> if (($inmembmod eq "yes") && ($inpassword eq $password)) { $cleartoedit = "yes"; }<br> unless ($cleartoedit eq "yes") { $cleartoedit = "no"; }<br> <br> if ($cleartoedit eq "no") { &error("Редактировании объявления&Вы не являетесь Модератором или Администратором, или Ваш пароль неверен"); } <p> # Check for blanks.<br> <br> if ($inannouncementpost eq "") { print header(); &error("Объявлении&Вы должны ввести объявление."); }<br> if ($inannouncementtitle eq "") { print header(); &error("Объявлении&Вы должны ввести заголовок объявления"); }<br> <br># Get the announcement file<br> <br> $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> $filetoopen = &stripMETA($filetoopen);<br> open(FILE, "$filetoopen") or die "Cannot locate the file to open";<br> @announcements = <FILE>;<br> close(FILE);<br> <br># Write it back with the new announcement at the top<br> <br> $count = 0;<br> <br> $newline = "$inannouncementtitle|$currenttime|$inannouncementpost";<br> chomp $newline;<br> <br> $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> $filetoopen = &stripMETA($filetoopen);<br> open(FILE, ">$filetoopen") or die "Не найден файл";<br> flock(FILE, 2);<br> foreach $line (@announcements) {<br> chomp $line;<br> if ($count eq $number) {<br> print FILE "$newline\n";<br> }<br> else {<br> print FILE "$line\n";<br> }<br> $count++;<br> }<br> close(FILE);<br> <br> &doend("Объявление отредактировано");<br> <br> exit;<br> <br> } # end edit announcement<br> <br> <br> <br> else { # start last else<br> <br> <br>### start displaying the announcements.<br> <br> <br> $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> $filetoopen = &stripMETA($filetoopen);<br> open(FILE, "$filetoopen");<br> @announcements = <FILE>;<br> close(FILE);<br> <br> $postcountcheck = 0;<br> <br> $totals = @announcements;<br> <br> if ($totals eq "0") { <br> $dateposted = time; <br> @announcements[0] = qq~В настоящее время нет объявлений|$dateposted| Нажмите <a href="$thisprog?action=add">Добавить</a> для добавления объявления (только для Администрации)<br>Это объявление будет удалено, когда будет сделано следующее~;<br> } <br> <br> <br> foreach $line (@announcements) {<br> <p> ($title, $dateposted, $post) = split(/\|/, $line);<br> <br> $dateposted = $dateposted + ($timedifferencevalue*3600) + ($timezone*3600);<br> $dateposted = &dateformat("$dateposted");<br> <br> $post = &ikoncode("$post");<br> $post = &doemoticons("$post");<br> <br> $post =~ s/\:\)/<img src=\"$imagesurl\/emoticons\/smile.gif\" border=\"0\">/g;<br> $post =~ s/\;\)/<img src=\"$imagesurl\/emoticons\/wink.gif\" border=\"0\">/g;<br> $post =~ s/\:\(/<img src=\"$imagesurl\/emoticons\/sad.gif\" border=\"0\">/g;<br> <br> <br> # Allow HTML<br> <br> $post =~ s/<\;/\</g;<br> $post =~ s/>\;/\>/g;<br> $post =~ s/"\;/\"/g;<br> <br> if ($count eq "1") {<br> $postbackcolor = "$postcolorone";<br> $postfontcolor = "$postfontcolorone";<br> $count++;<br> }<br> else {<br> $postbackcolor = "$postcolortwo";<br> $postfontcolor = "$postfontcolortwo";<br> $count = 1;<br> }<br> <br> <br> $post = qq~<p><blockquote>$post</blockquote><p>~;<br> <br> $adminadd = qq~<a href="$thisprog?action=add&inforum=$inforum&forumname=$forumname">Добавить</a>~;<br> $admindelete = qq~<a href="$thisprog?action=delete&number=$postcountcheck&inforum=$inforum&forumname=$forumname">Удалить</a>~;<br> $adminedit = qq~<a href="$thisprog?action=edit&number=$postcountcheck&inforum=$inforum&forumname=$forumname">Редактировать</a>~;<br> <br> &getmember("$inmembername");<p> $output .= qq~<br><tr><td bgcolor=$titlecolor align=center valign=top><font class=forumname><b>» $title «</b></td></tr><br> ~;<p> &moderator;<p> $cleartoedit = "no";<p> if (($membercode eq "ad") && ($inpassword eq $password)) { $cleartoedit = "yes"; }<br> if (($inmembmod eq "yes") && ($inpassword eq $password)) { $cleartoedit = "yes"; }<br> unless ($cleartoedit eq "yes") { $cleartoedit = "no"; }<br> if ($cleartoedit eq "yes") {<br> $output .= qq~<p><tr><td bgcolor=$postbackcolor align=left><font class=little><b>$admindelete | $adminedit | $adminadd</b></td></tr><br> ~;<br> }<p> $output .= qq~<br><tr><td bgcolor="$postbackcolor" valign=top><font class=forumdescription><br>$post</td></tr><tr><td bgcolor="$postbackcolor" valign=middle><font face="$font" color=$postfontcolor size=2>Добавлено: <b>$dateposted</b></td></font></tr><br> <br> ~;<p> $postcountcheck++;<br> <br> } # end foreach<p> } # end last else<p><p> $output .= qq~</table></td></tr></table>~;<br> <br> &output(<br> -Title => "$boardname - Объявления", <br> -ToPrint => $output, <br> -Version => $versionnumber <br>  <img src="smiles/wink.gif" align=absmiddle alt=";)">;<p><p><br>##############################################################<br>### Sub route (login)<p> <br>sub login {<p>local($url) = @_;<p> ($postto, $therest) = split(/\?/,$url);<br> <br> @pairs = split(/\&/,$therest);<br> <br> foreach (@pairs) {<br> ($name, $value)=split(/\=/,$_);<br> $hiddenvars .= qq~<input type=hidden name="$name" value="$value">\n~;<br> }<br> <br> <br> <br> $output .= qq~<br><form action="$postto" method="post">$hiddenvars <input type=hidden name="forumname" value="$forumname"><br><tr><td bgcolor=$miscbacktwo valign=middle colspan=2 align=center><font face="$font" color=$fontcolormisc size=2><b>Введите свои данные для добавления объявления</b><br>Только Администраторы или модераторы раздела могут добавить объявление</font></td></tr><br><tr><td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>Ник</font></td><br><td bgcolor=$miscbackone valign=middle><input type=text name="membername" value="$inmembername" size=30></td></tr><br><tr><td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>Пароль</font></td><br><td bgcolor=$miscbackone valign=middle><input type=password name="password" value="$inpassword" size=30></td></tr><br><tr><td bgcolor=$miscbacktwo valign=middle colspan=2 align=center><input type=submit name="submit" value="Войти"></form></td></tr></table></td></tr></table><br> ~;<br> <br> } # end routine <br> <br>sub doend {<p> my $action_taken = shift;<p> $relocurl = "$boardurl/forums.cgi?forum=$inforum"; <p> $output .= qq~<br><tr><td bgcolor=$miscbacktwo valign=middle align=center><font face="$font" color=$fontcolormisc size=2><b>Объявление</b></font></td></tr><br><tr><td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1><br>Если Ваш браузер не перешел автоматически, нажмите одну из ссылок:<ul><li><b>$action_taken</b><li><a href="$relocurl">Назад на форум</a><li><a href="$forumsummaryprog">К списку форумов</a></ul></tr></td></table></td></tr></table><br><meta http-equiv="refresh" content="1; url=$relocurl"><br> ~;<br> &output(<br> -Title => "$boardname - Объявления раздела", <br> -ToPrint => $output, <br> -Version => $versionnumber <br> );<p>}<p>
я конечно извиняюсь - переделывал под свой форум, поэтому там могут не совпадать размеры шрифтов, классы и т.п. однако, мне кажется - это может исправить каждый... читайте код 
После этого... правки в [B]forums.cgi[/B]
Найти:
<br> # Start printing the threads<p> $output .= qq~<br><table cellpadding=0 cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center><br><tr><td><table cellpadding=3 cellspacing=1 border=0 width=100%><br><tr><td bgcolor=$titlecolor width=50% colspan=2><font face="$font" color=$titlefontcolor size=1><b>$newthreadbutton</b></td><br><td bgcolor=$titlecolor align=left width=25%><font face="$font" color=$titlefontcolor size=1><b>Информация по теме</b></td><br><td bgcolor=$titlecolor width=25%><font face="$font" color=$titlefontcolor size=1><b>Последнее</b></td></tr><br> ~;<p>
Выше этого добавить:
<br> my $filetoopen = "$ikondir" . "forum$inforum/news.cgi";<br> if (-e $filetoopen) {<br> openFILE(-FH=>'FILE',-FN=>"$filetoopen",-MD=>'r');<br> my @announcementdata = <FILE>;<br> close(FILE);<p> my $totalannouncements = @announcementdata;<br> if ($totalannouncements eq "0" || $totalannouncements eq "" ) { $toshow = "no" }<br> ($title, $dateposted, $trash) = split(/\|/, $announcementdata[0]);<br> } else {<br> $dateposted = time; $toshow = "no";<p> }<p> my $dateposted = $dateposted + ($timedifferencevalue*3600) + ($timezone*3600);<br> $dateposted = &longdate("$dateposted");<p> if (($toshow ne "no") && ($startarray == 0)) {<p> $output .= qq~<br><table cellpadding=0 cellspacing=1 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center><br><tr><td bgcolor=$titlecolor colspan=4><font face="$font" color=$titlefontcolor size=3><br><b>>> Объявления раздела</b></font></td></tr><br><tr><td bgcolor=$forumcolortwo align=center width=50><img src="$imagesurl/images/announce.gif" border=0></td><br><td bgcolor=$forumcolortwo align=center><font face="$font" color=$forumfontcolor size=2><br>$title<br></font></td><td bgcolor=$forumcolortwo align="center" width=100><font face="$font" color=$forumfontcolor size=2><br>[ <a href="$boardurl/forumannounce.cgi?inforum=$inforum&forumname=$forumname">Прочитать все</a> ]</font></td><br><td bgcolor=$forumcolorone align=center width=120><font face="$font" color=$forumfontcolor size=1><b>$dateposted</b></font></td></tr></table><br> ~;<br> }<br>
Далее найти:
<br>Модерирование: <a href="$forumoptionsprog?action=prune&forum=$inforum">Массовая очистка</a><br>
Ниже этого добавить:
<br> <a href="forumannounce.cgi?action=add&inforum=$inforum&forumname=$forumname">Добавить объявление в раздел</a><br>
Юзайте!
Опять же.... менял под свой форум - могут быть изменения в HTML- части...
Всем спасибо, все свободны 