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

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


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

  • Ответы 202
  • Создана
  • Последний ответ

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

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

Ребята, дайте плз полную инструкцию для 2.1.7, а то я уже запутался.
Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Ставил на 2.1.7 с последними обновлениями безопасности и нифига.

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

Подскажите пожалуйста как подружить этот мод с модом php 2 html от urisoft!!!

plz plz!

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

Смени просто регулярные выражения.

showtopic на topic или что у тя там :D

 

Для обьявлений регексп не могу составить, вернее титле не берет

			if ( preg_match("/act=announce&f=(\d+)&id=(\d+)/", $show, $match)) {
			$show = $this->_getUrlLocalName('announce', $match[1]);								
		}

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

Нашел аналогичную тему.

Описанное в ней решение проверено на работоспосбность на 2.1.7 со всеми фиксами безопаснсоти на момент поста.

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

Не получается :D

у меня ссылки вида topic3262.html, forum5.html, user5155.html

 

вот прописал так:

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

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

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

болт

я в пхп не особо правда ;) помогите плз

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

Да ребята, случай тяжелый... Решение в двух шагах, нет все равно чего-то ищут, что-то у них не работает.
Ссылка на комментарий
Поделиться на других сайтах

GiV

 

вдруг возьмешь на вооружение:

 

$show = $ibforums->cache['forum_cache'][ $find[1] ][ 'name' ];

 

-1 запрос :D

и еще можно ввести флуд кнтроль, что бы если запостил юзверь 1000 имен и ссылок на темы форума, то не делать 1000 запросов

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

Да ребята, случай тяжелый... Решение в двух шагах, нет все равно чего-то ищут, что-то у них не работает.

Убейте меня, я не программер, я не вижу решения ;))) Подскажите пожалуйста. :D

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

Решение для 2.1.х с учетом замечаний и с комментариями

 

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

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

 $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

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

	/*-------------------------------------------------------------------------*/
// 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
	}

	// однако в случае с пользователями у нас другое fieldName
	if ( $from == 'members' ) {
		$fieldName  = 'members_display_name'; // имя поля с названием - members_display_name
	}

	$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;
}

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

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

Проверил на 2.2.0, всё работает. Делал как описано на 1 пост выше.

 

Я помню когда-то давно после названия темы ещё добавлялся номер сообщения в ней, если линк на на сообщения был. Как это можно реализовать?

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

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

Только сейчас заметил. Скорее всего, после установки этого мода.

 

[list]
 [*]Новый форум http://forum.com/
 [*]Старый форум http://forum2.com/
[/list]

Как видите - здесь все ОК.

 

А на моем форуме преобразовывает вот так:

 

[list]
[*]Новый форум <a href="http://forum.com/" target="_blank">http://forum.com/</a>

[*]Старый форум <a href="http://forum2.com/" target="_blank">http://forum2.com/</a>
[/list]

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

А на этом форуме ссылки преобразуются, видимо у Вас что-то еще изменялось.

 

Создайте вопрос в Клиент-Центре.

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

  • 2 месяца спустя...

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

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

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

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

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

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

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

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

Зарузка...

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

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

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