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

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


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

  • 1 месяц спустя...
  • Ответы 202
  • Создана
  • Последний ответ

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

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

  • 2 недели спустя...

Вот так попробуйте:

 

//===============================================

// мод для 2.1.x

//===============================================

// ./sources/classes/bbcode/class_bbcode_core.php

//===============================================

 

 

//----------------------

// находим

//----------------------

 

 

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

 

 

//----------------------

// заменяем на

//----------------------

 

 

		$show = $url['show'];

	if ( stristr($show, $this->ipsclass->base_url) )
	{ 
			 if ( preg_match("/showtopic=(\d+)/", $show, $get_top) or preg_match("/&t=(\d+)/", $show, $get_top) ) 
			 { 
		if ( is_array($get_top) )
		{
			$get_top[1]	= intval($get_top[1]);

			if ( $get_top[1] )
			{
							 //=======================================
							 // Select topic title
							 //=======================================

				$topic = $this->ipsclass->DB->query("SELECT title FROM ibf_topics WHERE tid='".$get_top[1]."'");

				if ( $topic_title = $this->ipsclass->DB->fetch_row($topic) )
				{
					$show = $topic_title['title'];
				}
			} 
		}
	}

	if ( preg_match("/showforum=(\d+)/", $show, $get_forum) ) 
	{ 
		if ( is_array($get_forum) )
		{
			$get_forum[1]	= intval($get_forum[1]);

			if ( $get_forum[1] )
			{
							 //=======================================
							 // Select forum name
							 //=======================================

				$forum = $this->ipsclass->DB->query("SELECT name FROM ibf_forums WHERE id='".$get_forum[1]."'");

				if ( $forum_title = $this->ipsclass->DB->fetch_row($forum) )
				{
					$show = $forum_title['name'];
				}
			} 
		}
	}

	if ( preg_match("/showuser=(\d+)/", $show, $get_member) ) 
	{ 
		if ( is_array($get_member) )
		{
			$get_member[1]	= intval($get_member[1]);

			if ( $get_member[1] )
			{
							 //=======================================
							 // Select user name
							 //=======================================

				$user = $this->ipsclass->DB->query("SELECT members_display_name FROM ibf_members WHERE id='".$get_member[1]."'");

				if ( $user_name = $this->ipsclass->DB->fetch_row($user) )
				{
					$show = $user_name['members_display_name'];
				}
			}
		} 
	}

	} elseif ( $skip_it != 1 )
...

 

Млин, все табуляторы съехали :D

Ну кто не разберётся, вот здесь http://www.sysman.ru/index.php?showtopic=2937 попонятней

 

для тех кто регится не хочет testtest/test

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

К сожалению не помогло :D Все предыдущие предупреждения пользователя исчезают после ввода в них нового с какой-либо ссылкой...

 

И в конце кода троеточие лишнее.

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

>> Почему такое происходит ?

 

запрос списка предупреждений *

цикл по результатам запроса

{

 

запрос на название темы **

 

}

 

запрос ** обнуляет результаты запроса *

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

находим в ./sources/classes/bbcode/class_bbcode_core.php

	var $load_custom_tags = 0;
var $max_embed_quotes = 15;

 

добавляем после

 

	var $not_parse_url	= 0;

 

находим

		if (stristr($show, $this->ipsclass->base_url))

 

заменяем на

 

		if (stristr($show, $this->ipsclass->base_url) && !$this->not_parse_url)

 

далее находим в sources/action_public/misc/warn.php

 

				$content = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $match[1] ) );

 

добавляем перед

 

				$this->parser->not_parse_url = 1;

 

 

не проверял но должно исправлять баг

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

:D

SAT это не выход

надо чтобы и ссылки парсились и чтобы предупреждения выводились.

Я бы сделал, но мне долго искать и разбираться в каком файле происходит вывод. Хотя наверно это ведь warn.php ?

Прикрепите его кто-нибудь в пост.

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

К сожалению не помогло :D

 

Я бы сделал, но мне долго искать и разбираться в каком файле происходит вывод. Хотя наверно это ведь warn.php ?

Прикрепите его кто-нибудь в пост.

 

Прикреплять файлы не дают - поэтому сделаю линк:

_http://fc.vvprofi.ru/warn.rar

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

В этом файле нужно заменить этот кусок кода:

			$this->ipsclass->DB->cache_add_query( 'warn_get_data', array( 'mid' => $this->warn_member['id'], 'limit_a' => $start, 'limit_b' => $perpage ) );
		$this->ipsclass->DB->cache_exec_query();

		while ( $r = $this->ipsclass->DB->fetch_row() )
		{

на

// Song, http://www.ibresource.ru/forums/index.php?s=&showtopic=6062&view=findpost&p=153265 modification

		$data = $this->ipsclass->DB->sql->warn_get_data( array( 
									'mid' => $this->warn_member['id'], 
									'limit_a' => $start, 
									'limit_b' => $perpage 
							) 	);

		$logs = $this->ipsclass->DB->query($data);

		while ( $r = $this->ipsclass->DB->fetch_row($logs) )
		{

// Song, http://www.ibresource.ru/forums/index.php?s=&showtopic=6062&view=findpost&p=153265 modification

 

и попробуйте, у меня нет возможности попробовать.

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

А где посмотреть, как это работает?

 

Не совсем понял, к прежним ссылкам вида

/forums/index.php?showtopic=6062

добавятся

/forums/классная тема

или как?

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

хм...ну раз для 2.1.х сделали такое исправление, то может еще и для 2.0.х сотворите? :D Многие будут вам крайне благодарны.
Ссылка на комментарий
Поделиться на других сайтах

Есть такой вопрос.

Версия 2.0.4 этот мод работает,но я поставил php to html от Urisofta http://www.ibresource.ru/db/375/

И теперь ссылки уже не преобразовываются

Помогите как исправить, потому что этот мод оочень полезен для меня

Спасибо

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

2 siemens

А в чем сложность ?

Насколько я понял нужно либо "написать вместо", либо "добавить к"

preg_match("/showtopic=(\d+)/", $show, $get_top) or preg_match("/&t=(\d+)/", $show, $get_top)

код для тем:

preg_match("/topic(\d+)\.html/", $show, $get_top) or preg_match("/topic(\d+)s\d+\.html/", $show, $get_top)

 

написать вместо|добавить к:

preg_match("/showforum=(\d+)/", $show, $get_forum)

код для форумов:

preg_match("/forum(\d+)\.html/", $show, $get_forum)

 

Исходный код взят и поста Song'a выше...

Судя по размытости темы и обилию кодов он может отличаться от вашего, но идея и так понятна... :D

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

У меня стоит не Songa ,а Winnie

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

Скажи как с этого переделать

Спасибо :D

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

Заменить:

if (preg_match("/showtopic=(\d+)/",$show,$find) || preg_match("/&t=(\d+)/",$show,$find))

На:

if (preg_match("/showtopic=(\d+)/",$show,$find) || preg_match("/&t=(\d+)/",$show,$find) || 
preg_match("/topic(\d+)\.html/",$show,$find) || preg_match("/topic(\d+)s\d+\.html/",$show,$find))

 

Заменить:

if (preg_match("/showforum=(\d+)/",$show,$find))

На:

if (preg_match("/showforum=(\d+)/",$show,$find) || preg_match("/forum(\d+)\.html/",$show,$find))

 

И родные форумовские и переконвертированные ссылки должны работать.

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

Я подправил вариант Song'а для исправления глюка с предупреждениями.

Вот вариант для IPB 2.0.x :

 

Находим в warn.php :

			$DB->cache_add_query( 'warn_get_data', array( 'mid' => $this->warn_member['id'], 'limit_a' => $start, 'limit_b' => $perpage ) );
		$DB->cache_exec_query();

		while ( $r = $DB->fetch_row() )
		{

 

И заменяем на :

						$data = $DB->sql->warn_get_data( array('mid' => $this->warn_member['id'], 'limit_a' => $start, 'limit_b' => $perpage) );
					$logs = $DB->query($data);
					while ( $r = $DB->fetch_row($logs) )
		{

 

Лично у меня всё отлично работает. Спасибо Song'у :D

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

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

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

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

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

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

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

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

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

Зарузка...

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

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

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