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

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


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

Перечитал тему, но так ине понял какой вариант корректно работает с версией 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. кто скажет, что не работает получит в лоб, решение взято полностью с этого форума.

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

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

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

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

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

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

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

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

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

Зарузка...

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

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

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