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

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


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

Вот, кстати, еще хотел спросить... урлу в текст превращать уже можем, при этом указывать номер поста (если он есть) можем тоже. А нельзя ли прикрутить указание номера страницы, конечно же если в ссылке есть этот самый, скажем 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()
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

Зарузка...

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

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

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