GiV Опубликовано 29 Мая 2004 Жалоба Поделиться Опубликовано 29 Мая 2004 Что это такое?Допустим пользователь отправляет ссылку на какую то тему с вашего форума. В конечном виде ссылка будет выглядеть таким образом http://your.forum.ru/index.php?showtopic=1 согласитесь не очень эстетично. Тем более если форум тематический, то такие ссылки приходится давать очень часто, дабы отправить заблудившегося почитать "по теме". Было бы здорово если вместо голого URL'а темы писалось название этой темы. И выглядело бы это эстетичнее, да и более информативнее. Как сделать?А делать будем так: Файл /sources/lib/post_parser.phpИщем:function regex_build_url($url=array()) {и добавляем послеglobal $DB;Ниже будут строки: // Make sure it's a "proper" url if (!preg_match( "/^(http|ftp|https|news):\/\//i", $url['show'] )) $skip_it = 1; $show = $url['show']; Добавляем после них: if (stristr($show, "your.forum.ru")) { if (preg_match("/showtopic=(\d+)/",$show,$find) || preg_match("/&t=(\d+)/",$show,$find)) { $DB->query("SELECT title FROM ibf_topics WHERE tid=".intval($find[1])); if($DB->get_num_rows()) { $record=$DB->fetch_row(); if (preg_match("~p=(\d+)~",$show,$find)) { $record['title'] = $record['title']." (post #{$find[1]})"; } $show = $record['title']; } } } else Обратите внимание на строкуif (stristr($show, "your.forum.ru")) в ней идет проверка на то что ссылка на тему именно вашего форума. Т.е. вместо your.forum.ru вам надо прописать URL без www и http до вашего форума. Например для нашего форума эта строка выглядит так:if (stristr($show, "ibresource.ru/forums")) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
s0nik Опубликовано 29 Мая 2004 Жалоба Поделиться Опубликовано 29 Мая 2004 Что-то не работает... Если просто отвечаешь в тему, то всё в порядке, а вот если в сообщении есть ссылка на тему на моём форуме, то выдаётся Fatal error: Call to a member function on a non-object in z:\home\localhost\www\forum\sources\lib\post_parser.php on line 1239Если в инете, то туже ошибку выдаёт.Форум 1.3.1 Адрес форум указан правильно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Wizard Опубликовано 29 Мая 2004 Жалоба Поделиться Опубликовано 29 Мая 2004 Fatal error: Call to a member function on a non-object in z:\home\localhost\www\forum\sources\lib\post_parser.php on line 1239Та же проблема. Тестировал на серваке. IPB 1.1.1 Final. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 29 Мая 2004 Автор Жалоба Поделиться Опубликовано 29 Мая 2004 ну да =) маленькая, но важная деталь, которую я забылвсе в том же файле, находим: function regex_build_url($url=array()) { и добавляем после global $DB; вот теперь все ок. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Wizard Опубликовано 29 Мая 2004 Жалоба Поделиться Опубликовано 29 Мая 2004 Vanish tnx Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Phantom Опубликовано 29 Мая 2004 Жалоба Поделиться Опубликовано 29 Мая 2004 Wow!Огромное спасибо!Классный мод! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 30 Мая 2004 Жалоба Поделиться Опубликовано 30 Мая 2004 Всё-таки решился выложить Добавил бы, что это преобразование надо делать перед добавление поста в базу с целью формирования [ URL = ссылка ]название топика [ /URL ], а не в режиме реального времени парса ссылок. Так мы просто расходуем ресуры MySQL зря. Добавлено в [mergetime]1085887126[/mergetime] Ой, сорри я забыл что в стандартном IPB в базе лежит html. Ну значит кусок текста "с целью формирования [ URL = ссылка ]название топика [ /URL ]" надо понимать как" с целью формирования <a href = "ссылка">название топика</a>" Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
merciful Опубликовано 30 Мая 2004 Жалоба Поделиться Опубликовано 30 Мая 2004 Спасибо за хак, классно и все работает Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Gogy Опубликовано 1 Июня 2004 Жалоба Поделиться Опубликовано 1 Июня 2004 А если стоит перекодировщик в html то не работает Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 2 Июня 2004 Автор Жалоба Поделиться Опубликовано 2 Июня 2004 Ясно дело, там ссылки совершенно другие. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
BESTRAFER Опубликовано 7 Июня 2004 Жалоба Поделиться Опубликовано 7 Июня 2004 Пашет! Огромное спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
lools Опубликовано 9 Июня 2004 Жалоба Поделиться Опубликовано 9 Июня 2004 ХМ.А как правильно писать ссылки...Лично если я просто обычно ссылку как текст даю, ничё не происходит Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Остап Опубликовано 10 Июня 2004 Жалоба Поделиться Опубликовано 10 Июня 2004 (изменено) Vanish У меня баг с ФаиндПост : if (preg_match("~p=(\d+)~",$show,$find)) { $record['title'] = $record['title']." (post #{\$find[1]})"; }Вот что вылазит : http://www.donkeyhot.net/images/ostap/bag1.JPG Внутри поста :[URL=http://www.donkeyhot.net/forum/index.php?showtopic=201&view=findpost&p=108908]АНЕКДОТ (post #{$find[1]})[/URL] Как профиксить с номером поста ? Так проканает ?$record['title'] = $record['title']." (post #". $find[1].")"; ???? Изменено 10 Июня 2004 пользователем Остап Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
lools Опубликовано 10 Июня 2004 Жалоба Поделиться Опубликовано 10 Июня 2004 Тык как правильно постить ссылки? Добавлено в [mergetime]1086876047[/mergetime] Всё, понял, но ссылки работают токо на темы! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 10 Июня 2004 Автор Жалоба Поделиться Опубликовано 10 Июня 2004 блин код попортился в тэгах Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Остап Опубликовано 10 Июня 2004 Жалоба Поделиться Опубликовано 10 Июня 2004 Vanish блин код попортился в тэгах Я так и не понял, ты исправил что то ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 11 Июня 2004 Жалоба Поделиться Опубликовано 11 Июня 2004 Остап if (preg_match("~p=(\d+)~",$show,$find)) $record['title'] = $record['title']." (сообщение #".$find[1].")"; Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Agent007 Опубликовано 13 Июня 2004 Жалоба Поделиться Опубликовано 13 Июня 2004 Спасибо тебе Vanish за этот мод Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
BESTRAFER Опубликовано 25 Июня 2004 Жалоба Поделиться Опубликовано 25 Июня 2004 Остап замениif (preg_match("~p=(\d+)~",$show,$find)) { $record['title'] = $record['title']." (post #{\$find[1]})"; }наif (preg_match("~p=(\d+)~",$show,$find)) $record['title'] = $record['title']." (¹".$find[1].")"; { //$record['title'] = $record['title']." (post #{\$find[1]})"; }мож не очень грамотно, но у меня пофиксилось... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
j0k3r Опубликовано 26 Июня 2004 Жалоба Поделиться Опубликовано 26 Июня 2004 Vanish Спасибо! Ну так что, делать так, как советует BESTRAFER ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kosiak Опубликовано 28 Июня 2004 Жалоба Поделиться Опубликовано 28 Июня 2004 Vanish Спасибо! Класс!Правда не с первого раза въехал для чего он Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
BESTRAFER Опубликовано 29 Июня 2004 Жалоба Поделиться Опубликовано 29 Июня 2004 j0k3r Ну так что, делать так, как советует BESTRAFER ?делай Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DDfans Опубликовано 6 Июля 2004 Жалоба Поделиться Опубликовано 6 Июля 2004 j0k3r Работают обе исправлялки и Vanish'а, и Song'а, однако (самый первый код) от Vanish'а выглядит удобнее и красивее, и более правильнее. Там просто перед $find по некоторым причинам после постинга черточка / вставлялась, которая, соответственно к глюкам и приводила (внимательнее посмотрите цитаты возмущающихся) Vanish Благодарствую, этого я давно ждал, и мне очень-то даже помогло уже Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
j0k3r Опубликовано 11 Июля 2004 Жалоба Поделиться Опубликовано 11 Июля 2004 BESTRAFER DDfans А я сначал думал, что версия Ваниша не до конца работает Тепеь всё ок Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DDfans Опубликовано 11 Июля 2004 Жалоба Поделиться Опубликовано 11 Июля 2004 Ну, учитывая ту "местную" багу цитрирования кода, код и не работал соответственно ...однако написан со знанием дела Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.