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

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


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

  • Ответы 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 месяца спустя...

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

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

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

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

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

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

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

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

Зарузка...

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

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

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