hERd Опубликовано 19 Марта 2004 Жалоба Поделиться Опубликовано 19 Марта 2004 Хочу как тут Что бы линки на темы преобразовывались в название темы в кот. линк ведет... То есть вместо http://www.ibresоurce.ru/forums/index.php?act=ST&f=8&t=4749 (линк битый, ) это:Название темы вместо линка Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 19 Марта 2004 Жалоба Поделиться Опубликовано 19 Марта 2004 У меня разметка используется своя, там я использую такую фишку, думаю, переделать будет не трудно: <? function lcml_forum_topics($txt) { $txt=preg_replace("!(\s|^)http://(www\.)?airbase\.ru/forums/!m","$1http://forums.airbase.ru/",$txt); $txt=preg_replace("!http://forums\.airbase\.ru/index\.php\?!","http://forums.airbase.ru/?",$txt); $txt=preg_replace("!(\s|^|\()http://forums\.airbase\.ru/\?act=ST&f=(\d+)&t=(\d+)&st=(\d+)(\s|$|\.|,|\))!me","'$1'.lcml_forum_topics_page('$2','$3','$4').'$5'",$txt); $txt=preg_replace("!(\s|^|\()http://forums\.airbase\.ru/\?showtopic=(\d+)&st=(\d+)(\s|$|\.|,|\))!me","'$1'.lcml_forum_topics_page('','$2','$3').'$4'",$txt); $txt=preg_replace("!http://forums\.airbase\.ru/\?act=ST&f=\d+&t=(\d+)!","http://forums.airbase.ru/index.php?showtopic=$1",$txt); $txt=preg_replace("!(\s|^|\()http://forums\.airbase\.ru/\?showtopic=(\d+)(\s|$|\.|,|\))!me","'$1'.lcml_forum_topics_title('$2').'$3'",$txt); $txt=preg_replace("!(\s|^|\()http://forums\.airbase\.ru/\?showtopic=(\d+)&view=findpost&p=(\d+)(\s|$|\.|,|\))!me","'$1'.lcml_forum_topics_post('$2','$3').'$4'",$txt); return $txt; } function lcml_forum_topics_title($topic) { $dbh = @mysql_connect("localhost", "login", "password") or die ("Could not connect"); mysql_select_db("FORUM") or die ("Could not select database"); $url="http://forums.airbase.ru/index.php?showtopic=$topic"; $q="SELECT title FROM ib_topics WHERE tid=$topic"; $query = mysql_query ($q) or die ("Query '$q' failed, error ".mysql_errno().": ".mysql_error()."<BR>"); $res = mysql_fetch_array($query); mysql_close(); if($res['title']) $title=chop($res['title']); else $title=$url; return "<a href=\"$url\">$title</a>"; } function lcml_forum_topics_post($topic,$post) { $dbh = @mysql_connect("localhost", "login", "password") or die ("Could not connect"); mysql_select_db("FORUM") or die ("Could not select database"); $q="SELECT t.title,t.tid,p.author_name,p.post_date FROM ib_posts p LEFT JOIN ib_topics t ON (t.tid=p.topic_id) WHERE p.pid=$post"; $query = mysql_query ($q) or die ("Query '$q' failed, error ".mysql_errno().": ".mysql_error()."<BR>"); $res = mysql_fetch_array($query); mysql_close(); $url="http://forums.airbase.ru/index.php?showtopic=$topic&view=findpost&p=$post"; if($res['title']) $title=chop($res['title'])." <font size=\"1\">(".$res['author_name'].", ".strftime("%d.%m.%y %H:%M",$res['post_date']).")</font>"; else $title=$url; return "<a href=\"$url\">$title</a>"; } function lcml_forum_topics_page($forum,$topic,$start) { $dbh = @mysql_connect("localhost", "login", "password") or die ("Could not connect"); mysql_select_db("FORUM") or die ("Could not select database"); if($forum) $url="http://www.airbase.ru/forums/index.php?act=ST&f=$forum&t=$topic&st=$start"; else $url="http://forums.airbase.ru/index.php?showtopic=$topic&st=$start"; $q="SELECT title FROM ib_topics WHERE tid=$topic"; $query = mysql_query ($q) or die ("Query '$q' failed, error ".mysql_errno().": ".mysql_error()."<BR>"); $res = mysql_fetch_array($query); mysql_close(); if($res['title']) { $title=chop($res['title']); if($start>0) $title.=" <font size=\"1\">(page ".(intval($start/15)+1).")</font>"; } else $title=$url; return "<a href=\"$url\">$title</a>"; } ?> Т.е. понимает все основные ссылки, прописывает их или как название топика, или как название топика с номером страницы, или как название топика с автором и временем постинга. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
hERd Опубликовано 19 Марта 2004 Автор Жалоба Поделиться Опубликовано 19 Марта 2004 Эээ, спассибо но куда это вставить? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 19 Марта 2004 Жалоба Поделиться Опубликовано 19 Марта 2004 >Эээ, спассибо но куда это вставить? Я же говорю, у меня свой движок BB-тэгов. Это не iBF-хак.Если отбросить сложности в виде сохранения исходного сообщения, что позволяет не пользоваться декомпиляцией, то можно приблизительно так сделать. 1. Записать мой фрагмент в файл, скажем, lcml.php 2. найти в sources/lib/post_parser.php строки //-------------------------------------- // convert <br> to \n //-------------------------------------- $txt = preg_replace( "/<br>|<br \/>/", "\n", $txt ); 3. Добавить после них: include_once("/path_to_you_file/lcml.php"); $txt=lcml_forum_topics($txt); По идее должно работать, если я не тормознул в этой "адаптации". Правда, после декомпиляции (на редактировании) увидишь не исходный текст, а что-то типа ... Добавлено в [mergetime]1079711604[/mergetime] Да, вдогонку. В базе по умолчанию, конечно, нужно в именах таблицы ib_* на ibf_* переделать. А ещё лучше потом соптимизировать на использование уже открытого коннекта к базе данных (просто у меня этот код и из других мест вызывается, не только с форума). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
hERd Опубликовано 19 Марта 2004 Автор Жалоба Поделиться Опубликовано 19 Марта 2004 Спасибо. И все-же кто то знает 100% работающий хак? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
hERd Опубликовано 20 Марта 2004 Автор Жалоба Поделиться Опубликовано 20 Марта 2004 Ну это ж не чесно! Этот хак стоит тут на форуме и никто не знает что делать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 20 Марта 2004 Жалоба Поделиться Опубликовано 20 Марта 2004 Нет, ну ленивый же народ пошёл. Трудно проверить работоспособность моего? Всего две строчки дописать лень? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
hERd Опубликовано 20 Марта 2004 Автор Жалоба Поделиться Опубликовано 20 Марта 2004 Warning: convert(/lcml.php): failed to open stream: No such file or directory in d:\home\localhost\www\forum\sources\lib\post_parser.php on line 154 Warning: convert(): Failed opening '/lcml.php' for inclusion (include_path='.;c:\php4\pear') in d:\home\localhost\www\forum\sources\lib\post_parser.php on line 154 Fatal error: Call to undefined function: lcml_forum_topics() in d:\home\localhost\www\forum\sources\lib\post_parser.php on line 155 ps. фалй lcml.php лежит в корневой папки форума... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 20 Марта 2004 Жалоба Поделиться Опубликовано 20 Марта 2004 Ну, тебе ж чётко описали, что "Failed opening '/lcml.php' for inclusion". С маршрутом что-то намудрил. Напомню, что в include() прописывается физический путь (абсолютный или относительный), а не URL. Кидай в тот же каталог, где post_parser.php и пиши без всякого пути include("lcml.php"); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
hERd Опубликовано 20 Марта 2004 Автор Жалоба Поделиться Опубликовано 20 Марта 2004 Все, ошибки нет, но линк не преобразовываеться Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hottt Опубликовано 20 Марта 2004 Жалоба Поделиться Опубликовано 20 Марта 2004 Я тоже хочу такой мод Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sanjak Опубликовано 20 Марта 2004 Жалоба Поделиться Опубликовано 20 Марта 2004 И я не против бы такой мод заиметь Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Farch Опубликовано 20 Марта 2004 Жалоба Поделиться Опубликовано 20 Марта 2004 Balancer а в .htaccess ничего нет чтоли? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 20 Марта 2004 Жалоба Поделиться Опубликовано 20 Марта 2004 >а в .htaccess ничего нет чтоли? Так ничего и не надо >Все, ошибки нет, но линк не преобразовываеться Адрес сайта forums.airbase.ru на свой корректно поменял? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
hERd Опубликовано 20 Марта 2004 Автор Жалоба Поделиться Опубликовано 20 Марта 2004 Не, все-равно не пашет Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
yurez Опубликовано 1 Апреля 2004 Жалоба Поделиться Опубликовано 1 Апреля 2004 но на этом форуме эта фича работаеткак? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 1 Апреля 2004 Жалоба Поделиться Опубликовано 1 Апреля 2004 Видимо, также, как у меня. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.