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

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


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

Перечитал тему, но так ине понял какой вариант корректно работает с версией 2.1.x Большая просьба если есть время отпишите какой именно вариант подходит. А еще лучше будет если запостите полный безглючный вариант :D
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

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

Надо бы такие темы тереть и давать ссылку на КОНЕЧНЫЙ, РАБОТАЮЩИЙ вариант, потому что читать 7 страниц этого флуда просто нереально, попутно разбираясь чья правка правильнее.

Кроме того, я не понял какой вид приобретают ссылки, даже пример никто не выложил.

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

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

// мод для 2.1.x

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

[cut]

Нехватает проверки на существование топика, а то если какой-нить умник введет номер несуществующей темы, хрень получается.

Посмотрите, так вроде правильней:

 

$show = $url['show'];

	if (stristr($show, $this->ipsclass->base_url))
		 { 
			 if (preg_match("/showtopic=(\d+)/",$show,$get_top)) 
			 { 

					 //=======================================
					 // Select topic title
					 //=======================================
					 $this->ipsclass->DB->simple_construct( array( 'select' => 'title', 'from' => 'topics', 'where' => 'tid='.intval($get_top[1]) ) );

					 if($get_title = $this->ipsclass->DB->simple_exec()) 
					 { 
				$topic_title = $this->ipsclass->DB->fetch_row($get_title);
				 if($topic_title['title']!="") {
					  $show = $topic_title['title']; 
					  }
					} 
			 }
		if(preg_match("/&t=(\d+)/",$show,$get_top)) 
		{
					 //=======================================
					 // Select topic title
					 //=======================================
					 $this->ipsclass->DB->simple_construct( array( 'select' => 'title', 'from' => 'topics', 'where' => 'tid='.intval($get_top[1]) ) );

					 if($get_title = $this->ipsclass->DB->simple_exec()) 
					 { 
				$topic_title = $this->ipsclass->DB->fetch_row($get_title);
					  if($topic_title['title']!="") {
					  $show = $topic_title['title']; 
					  }
					} 
		}
			  if (preg_match("/showforum=(\d+)/",$show,$get_forum)) 
			 { 
					 //=======================================
					 // Select forum name
					 //=======================================
					 $this->ipsclass->DB->simple_construct( array( 'select' => 'name', 'from' => 'forums', 'where' => 'id='.intval($get_forum[1]) ) );

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

			 } 

	   }
	elseif ($skip_it != 1)

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

Я почитал все эти семь старниц.... Вот что я нашел для вресии 2.1 запостю здесь...

 

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

// мод для 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))
			 {

					 //=======================================
					 // Select topic title
					 //=======================================
					 $this->ipsclass->DB->simple_construct( array( 'select' => 'title', 'from' => 'topics', 'where' => 'tid='.intval($get_top[1]) ) );

					 if($get_title = $this->ipsclass->DB->simple_exec())
					 {
				$topic_title = $this->ipsclass->DB->fetch_row($get_title);
				 if($topic_title['title']!="") {
					  $show = $topic_title['title'];
					  }
					}
			 }
		if(preg_match("/&t=(\d+)/",$show,$get_top))
		{
					 //=======================================
					 // Select topic title
					 //=======================================
					 $this->ipsclass->DB->simple_construct( array( 'select' => 'title', 'from' => 'topics', 'where' => 'tid='.intval($get_top[1]) ) );

					 if($get_title = $this->ipsclass->DB->simple_exec())
					 {
				$topic_title = $this->ipsclass->DB->fetch_row($get_title);
					  if($topic_title['title']!="") {
					  $show = $topic_title['title'];
					  }
					}
		}
			  if (preg_match("/showforum=(\d+)/",$show,$get_forum))
			 {
					 //=======================================
					 // Select forum name
					 //=======================================
					 $this->ipsclass->DB->simple_construct( array( 'select' => 'name', 'from' => 'forums', 'where' => 'id='.intval($get_forum[1]) ) );

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

			 }

	   }
	elseif ($skip_it != 1)

 

 

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

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

			$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

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

Раньше было (в 2.0.х) то что если например вставляешь отдельный пост в виде

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

То и пишеться " Как сделать ссылки на темы форума читабельными (Сообщение #134)", что-то типа этого. Как это зделать?

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

  • 1 месяц спустя...
Уважаемые авторы последних двух постов: вы провели свои модификации?

Просто не хочу ставить глюканутый мод на форум :D

Ну так поставь - посмотри, если работает, значит ок, если нет - убираешь.

Чего бояться... =)

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

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

Привет все работает замечательно! пробовал на 2.1.6

Одна только просьба, помогите пожалуйста убрать из адреса index.php

Пожааалуйста :D

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

  • 2 недели спустя...
Все что я написао выше работает в лучшем виде. Предлагаю автору поста запостить это как первый пост и поставить дату.
Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
Обратите внимание, что на данном форуме так же пропал этот мод. Изменено пользователем Anthony
Ссылка на комментарий
Поделиться на других сайтах

2.1.7 - не работает. Названия остаются в том же виде :D Ставил последнюю написанную версию от ArtemedoNа

 

у меня все работает, вот смотри этот код http://www.ibresource.ru/forums/index.php?...st&p=171915

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

  • 4 недели спустя...
2.1.7 - не работает. Названия остаются в том же виде :D Ставил последнюю написанную версию от ArtemedoNа

Аналогично.

 

В смысле, версию от Song-а поставил.

Ничего не происходит, постятся ссылки, как обычно.

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

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

у меня он на 2.1.5 отключился

 

наверно после исправления уязвимостей

 

на этом форуме он тоже не пашет

 

http://www.ibresource.ru/forums/index.php?...6062&st=140

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

Да не пашет... После последних обновлений безопасности не пашет.

 

Решение для 2.1.х

Файл ./sources/classes/bbcode/class_bbcode_core.php

Найти: (2.1.7.RUS.def строка 1494)

 $show = $url['show'];

Добавить после:

 		if ( stristr($show, $this->ipsclass->base_url) ) 
	{
		$match = array();

		if ( preg_match("/showtopic=(\d+)/", $show, $match) OR preg_match("/&t=(\d+)/", $show, $match) ) {
			$show = $this->_getUrlLocalName('topics', $match[1]);								
		}

		if ( preg_match("/showforum=(\d+)/", $show, $match) ) {
			$show = $this->_getUrlLocalName('forums', $match[1]);								
		}

		if ( preg_match("/showuser=(\d+)/", $show, $match) ) {
			$show = $this->_getUrlLocalName('members', $match[1]);								
		}						

	} 
	else

Найти: (2.1.7.RUS.def строка 1507)

	/*-------------------------------------------------------------------------*/
// Remove sessions in a nice way
/*-------------------------------------------------------------------------*/

Добавить перед:

	function _getUrlLocalName( $from = '',  $for = '' ) 
{
	if ( !$from OR !$for ) return;

	$pk 		= 'id';
	$fieldName 	= 'name';

	if ( $from == 'topics' ) {
		$pk 		= 'tid';
		$fieldName  = 'title';
	}

	$this->ipsclass->DB->simple_select( $fieldName, $from, $pk . "= '" . $for . "'" );
	$ci   = $this->ipsclass->DB->exec_query();
	$row  = $this->ipsclass->DB->fetch_row( $ci );		

	if ( $fieldValue = $row[ $fieldName ] ) {
		return $fieldValue;
	}

	return;
}

 

P.S. кто скажет, что не работает получит в лоб, решение взято полностью с этого форума.

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

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

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

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

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

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

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

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

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

Зарузка...

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

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

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