Как сделать ссылки на темы форума читабельными, преобразование URL темы в ее название - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

  • 2 Страниц +
  • 1
  • 2

Как сделать ссылки на темы форума читабельными, преобразование URL темы в ее название

#1 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 13:37

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

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

Допустим пользователь отправляет ссылку на какую то тему с вашего форума. В конечном виде ссылка будет выглядеть таким образом http://your.forum.ru...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

#2 Пользователь не на сайте   Ph-A ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 5 558
  • Регистрация: 18-Сентябрь 06
  • Репутация: 382
  • Откуда:Moscow
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 14:26

Просмотреть сообщениеQartvela™ сказал(а):

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

Разве это не стандартная функция форума в 3.x?

Или я что-то не понимаю....

Просмотреть сообщениеQartvela™ сказал(а):

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

Настройки > System Settings > System > Поисковая оптимизация (SEO)
0

#3 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 14:57

Просмотреть сообщениеPh-A сказал(а):

Настройки > System Settings > System > Поисковая оптимизация (SEO)

а тут у меня только:

Цитата

Search Engine Visits
-Enable Search Engine recognition?
-Log all Search Engine visits?
-Treat Search Engine as part of which group?
-Show Search Engine in the active users list?
-Show Search Engine as anonymous

Friendly URL Features
-direct to new friendly URL format?
-URL Type
-Use .htaccess mod_rewrite
-Incorrect Permalink Handling

Board Index
-Board Index Page Title
-Meta Description
-Meta Keywords

Который из них может такое сделать? :(
0

#4 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 062
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 15:06

Просмотреть сообщениеPh-A сказал(а):

Настройки > System Settings > System > Поисковая оптимизация (SEO)

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

а ля
http://ipbskins.ru/f.../topic9047.html => Как сделать ссылки на темы форума читабельными, преобразование URL темы в ее название
1

#5 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 15:37

+ Post ID:
Как сделать ссылки на темы форума читабельными, преобразование URL темы в ее название_PostID_#1
0

#6 Пользователь не на сайте   Ph-A ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 5 558
  • Регистрация: 18-Сентябрь 06
  • Репутация: 382
  • Откуда:Moscow
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 16:21

Просмотреть сообщениеsiv1987 сказал(а):

ТС хочет чтобы он вставлял безанкорную ссылку на тему

Дошло.

Такого не видел, хотя странно, что не кто не сделал.
0

#7 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 17:49

на http://forum.ge сделали Вложение  ScreenCapture0002.jpg (98,04К)
Количество загрузок: 33
думаю очень полезная штука :)
0

#8 Пользователь не на сайте   Ph-A ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 5 558
  • Регистрация: 18-Сентябрь 06
  • Репутация: 382
  • Откуда:Moscow
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 18:01

Насколько я понимаю, это то, что вы ищите - (Pav32) Retrieve Link Titles, но для 3.2
1

#9 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 18:03

Ph-A, да, точно. но к сожалению для 3.2 :(
---------------


не, не совсем. он работает для других сайтов тоже.

например если захочешь поставит линк из youtube, тогда уже надо теги поставить, если я не ошибаюсь.
0

#10 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 062
  • IPB version:3.1.x
 

Отправлено 02 Январь 2012 - 20:22

Вот что напридумал, для перегрузки метода отправки постов
Конечно, шаблон $urlTopicExp подходит только для типа чпу как на ipbskins, для каждого надо писать отдельно, немного подправить, пооптимизировать, и можно будет написать хук.

$urlTopicExp = preg_quote( $settings['board_url'], '#' ). '/topic(\d+)\.html';

if( preg_match_all( '#(?:^|\s)'.$urlTopicExp.'(?:[^"\s\[\]]*)#i', $_POST['Post'], $out ) )
{
	$ids = array();

	foreach( $out[1] as $key => $id )
	{
		$ids[] = $id;
	}

	$register->DB()->build( array(  'select' => '*',
                                         'from'   => 'topics',
                                         'where'  => 'tid IN ('.implode( ',',$ids ).')'
	) );

	$registry->DB()->execute();

	while( $row = $registry->DB()->fetch() )
	{
		$pos = array_search( $row['tid'], $out[1] );

		if( $pos )
		{
			$ser  = trim( $out[0][$pos] );
			$rep  = '[url="'.$ser.'"]'.$row['title_seo'].'[/url]';

			$_POST['Post'] = str_replace( $ser, $rep, $_POST['Post'] );
		}
	}
}


?>

2

#11 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 03 Январь 2012 - 11:43

Просмотреть сообщениеsiv1987 сказал(а):

и можно будет написать хук

будет хорошо если вы займетесь этим делом :)
0

#12 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 062
  • IPB version:3.1.x
 

Отправлено 06 Январь 2012 - 23:10

Прошу приветствовать - его величество Хук Link Replace.
Перегружает класс отправки постов, так что работает только при создание новой темы и добавления сообщений.
Ссылки парсятя только на темы и форумы.
Настроен на урл вида /index.php?showtopic=1
Если используется чпу, нужно написать в файле хука регулярку ($urlExp) под свой тип.


Хук обновлен. Работает с текущем форматом ссылок на форуме, для этого править шаблоны в хуке больше не нужно.

Вложений


3

#13 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 07 Январь 2012 - 11:41

siv1987, большое вам спасибо от Mitsubishi Club Georgia
0

#14 Пользователь не на сайте   Qartvela™ ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 168
  • Регистрация: 15-Февраль 11
  • Репутация: 22
  • IPB version:3.1.x
 

Отправлено 07 Январь 2012 - 12:31

Test Report:

Ссылки не парсятся если добавляешь ссылку когда редактируешь пост :(
0

#15 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 245
  • Регистрация: 20-Март 09
  • Репутация: 2 062
  • IPB version:3.1.x
 

Отправлено 07 Январь 2012 - 12:38

Цитата

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

0

Сообщить об этой теме:


  • 2 Страниц +
  • 1
  • 2


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна