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

вместо голого URL'а темы название этой темы ...


ikamazini

Вопрос

http://wiki.iblink.ru/tips/read

 

Что это такое?

 

Допустим пользователь отправляет ссылку на какую то тему с вашего форума. В конечном виде ссылка будет выглядеть таким образом http://your.forum.ru/index.php?showtopic=1

 

согласитесь не очень эстетично. Тем более если форум тематический, то такие ссылки приходится давать очень часто, дабы отправить заблудившегося почитать «по теме».

 

Было бы здорово если вместо голого URL'а темы писалось название этой темы. И выглядело бы это эстетичнее, да и более информативнее.

Как сделать?

Для 2.1.х

 

А делать будем так:

 

Файл ./sources/classes/bbcode/class_bbcode_core.php, найти:

 

$show = $url['show'];

 

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

   	if ( strpos($show, $this->ipsclass->base_url) !== false )
   	{
       	$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]);
       	}

       	if ( !$show ) {
           	$show = $url['show'];
       	}
   	} else

 

Найти:

 

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

 

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

 

	function _getUrlLocalName( $from = '',  $for = '' )
{
   	// сколько раз разбирали ссылки
   	static $parsedUrls;

   	// проверка на лимит разбора ссылок, чем больше число, тем больше
   	// вероятность, что злоумышленник может создать нагрузку на БД
   	if ( ++$parsedUrls >= 10 ) return false;

   	if ( !$from OR !$for ) return false;

   	// оптимизация для ссылок на форумы/разделы. Берем имя не через запрос
   	// к базе, а из кэша форумов.
   	// Спасибо улетает к SAT
   	if ( $from == 'forums' ) {
       	return $this->ipsclass->cache['forum_cache'][ $for ]['name'];
   	}

   	// pk    	- имя первичного ключа (id'ентификатора) в таблице
   	// fieldName - имя поля в таблице, в котором хранится возвращаемое имя
   	$pk     	= 'id'; 	// в большинстве случаев имя первичного ключа - id
   	$fieldName  = 'name';   // имя поля - name

   	// однако в случае с темами у нас другие pk и fieldName
   	if ( $from == 'topics' ) {
       	$pk     	= 'tid';   // имя первичного ключа - tid
       	$fieldName  = 'title'; // имя поля с названием - 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 false;
}

 

классни мод! но думаю он не будет работать для 3.1.4 :(, может кто нибудь поможет и адаптирует этот мод для 3.1.4

 

или может уже существует для 3.1.4, подскажите если так ...

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

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

  • 0

В версиях 3+ всё делается проще. Достаточно открыть файлик initdata.php заменить[/font]

define ('IPB_USE_ONLY_ID_FURL',TRUE); 

 

на

define('IPB_USE_ONLY_ID_FURL', FALSE);

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

  • 0

вот что я имел ввиду:

хочу чтобы вставлять безанкорную ссылку на тему, а она реплейсилась на ссылку с ее названием.

 

http://forums.ibreso...post__p__384723 => вместо голого URL'а темы название этой темы ... PostID#4

 

 

 

 

с Новым Годом Вас!

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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

Зарузка...
×
×
  • Создать...

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

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