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

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


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

  • 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

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

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

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

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

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

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

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

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

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

Зарузка...

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

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

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