Перейти к контенту

Как сделать ссылки на темы форума читабельными


Рекомендуемые сообщения

Вот, кстати, еще хотел спросить... урлу в текст превращать уже можем, при этом указывать номер поста (если он есть) можем тоже. А нельзя ли прикрутить указание номера страницы, конечно же если в ссылке есть этот самый, скажем st=20?
Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 202
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

                 if (preg_match("~st=(\d+)~",$show,$find))
                 {
                  $record['title'] = $record['title']." (page #{$find[1]})";
                 }

Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...

Кста предлагаю фикс:

                 $record=$DB->fetch_row(); 
                 
                 if (preg_match("~p=(\d+)~",$show,$find))
                 {
                  $record['title'] = $record['title']." (post #{$find[1]})";
                 }
                 
                 $show = $record['title']; 
               }

заменить на

                 if ( $record=$DB->fetch_row() )
                 {
                 
                                  if (preg_match("~p=(\d+)~",$show,$find))
                                  {
                                   $record['title'] = $record['title']." (post #{$find[1]})";
                                  }
                 
                                  $show = $record['title']; 
                 }
 }

это решит вопрос пустой ссылки если такого топика не существует.

А в моём случае ссылка останется просто ссылкой без автозамены.

Ссылка на комментарий
Поделиться на других сайтах

Как сделать ссылки на темы форума читабельными

 

http://www.ibresource.ru/forums/index.php?showtopic=6062&view=findpost&p=67244

 

Тут :D

Ссылка на комментарий
Поделиться на других сайтах

файл post_parser.php

внутри функции

 function regex_build_url($url=array())

сразу после фигурной скобки добавляем

global $ibforums, $DB;

 

затем тут же ищем

  $show     = $url['show'];
  
  if ($skip_it != 1)

и заменяем на

  $show     = $url['show'];
  
  if (stristr($show, $ibforums->vars['board_url']))
         { 
         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']." (#{$find[1]})";
                   }
                	 $show = $record['title']; 
              	 } 
             } 
         if (preg_match("/showforum=(\d+)/",$show,$find)) 
             { 
                 $DB->query("SELECT name FROM ibf_forums WHERE id=".intval($find[1])); 
                 if($DB->get_num_rows()) 
                 { 
                   $record=$DB->fetch_row(); 
                	 $show = $record['name']; 
              	 } 
             } 
             
        }

  
  elseif ($skip_it != 1)

Изменено пользователем winnie
Ссылка на комментарий
Поделиться на других сайтах

Parse error: parse error, expecting `'{'' in /home/www/html/sources/lib/post_parser.php on line 1362
Fatal error: Cannot instantiate non-existent class: post_parser in /home/www/html/sources/post.php on line 68

=(

Первая ошибка это там где я добавил global $ibforums, $DB;

Вторая ошибка, в том файле на линии 68 написано:

        $this->parser->bypass_badwords = intval($ibforums->member['g_bypass_badwords']);

winnie

Зделал только те исправления которые дал ты. Или надо еще гдето чтото добавлять/исправлять?

Распишите здесь все подробнее с учетом всех исправлений написаных в данном топике, или изменити первое сообщение со всеми исправлениями/добавлениями... :D

Ссылка на комментарий
Поделиться на других сайтах

Вот так теперь выглядит у меня строка, вроде ничего не говрит ;)

        function regex_build_url($url=array())
        {
      global $ibforums, $DB;

 

Но! При написании собщения содержащее УРЛ какгонить топика пишет следующее

PB WARNING [2] stristr(): Empty delimiter. (Line: 1436 of /sources/lib/post_parser.php)

В строке 1436 следующий код:

if (stristr($show, preg_replace( "/^([http|ftp|https|news]:\/\/)/i","", $ibforums->vars['board_url'])))

Как говориться: "Ничего не понимаю! :D" (с) Братья Пилоты :)

Ссылка на комментарий
Поделиться на других сайтах

у вас урл борды правильно в настройках прописан - какого вида он у вас?

можно конечно проще поступить в это строчке вместо

 preg_replace( "/^([http|ftp|https|news]:\/\/)/i","", $ibforums->vars['board_url'])

прописать адрес форума

Ссылка на комментарий
Поделиться на других сайтах

Борда у меня стоит в локалке и имеет вид http://forum.bp/ т.е. как основной сайт.

Так как возможно исправить?

 

Почему проще? Тогда он небудет парсить ФТП, я так понял что он парсит фтп до файла, например есть большая УРЛа до фтп, а он сокращает и пишет только файл...

Ссылка на комментарий
Поделиться на других сайтах

:D да нет там фтп вообще ни к чему.. это совсем отдельная фича.. я забыл удалить из модификации просто..

см. мой пост о самой модификаци - я его его изменил

Ссылка на комментарий
Поделиться на других сайтах

вообщем смотрите Как сделать ссылки на темы форума читабельными - пследний раздел CODE добавил и парсинг ссылок на форумы
Ссылка на комментарий
Поделиться на других сайтах

Остап

а я давно говорил, что эти запросы надо применять перед добавлением поста в базу, но уж никак не при парсинге в режиме реального времени! Но никто слушать не хочет :D

Ссылка на комментарий
Поделиться на других сайтах

а чего там говорить? я уверен ты это знаешь. Это функция post_parser: convert()
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.