Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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, подскажите если так ...

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

Опубликовано:

Прошу приветствовать, его величество Хук.

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

Ссылки парсятя только на темы и форумы.

Настроен на урл вида /index.php?showtopic=1

Если используется чпу, нужно написать в файле хука регулярку ($urlExp) под свой тип.

Добрый вечер, я вот хук установил,но однако ничего не произошло... То что на новые посты и ответы работает - помню ) Что делать?)

Опубликовано:

Только для 3.1.x

И в коде строго заложено только тип урлов /index.php?showtopic=1

Опубликовано:

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

я думал что для 3,2. и про то какого вида должны быть посты тоже понятно.. Тое сть такого мода который был для двушки, для трешки не существует?

  • 10 месяцев спустя...
Опубликовано:
  • Автор

Прошу приветствовать - его величество Хук.

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

Ссылки парсятя только на темы и форумы.

Настроен на урл вида /index.php?showtopic=1

Если используется чпу, нужно написать в файле хука регулярку ($urlExp) под свой тип.

 

Cпасибо еще раз!

 

 

 

Если используется чпу, нужно написать в файле хука регулярку ($urlExp) под свой тип.

$urlExp .= '/(forum|topic)(\d+)\.html';

Ok

http://site.com/topic123.html/page__pid__1__st__1#entry123

Получаем: Topic Title(post #123)

 

Но, если ссылка такого вида:

http://site.com/topic123.html/page__view__findpost__p__123

Получаем Topic Title без номера поста... хотелось бы с номером

 

@siv1987, прошу вас, если будет "свободное" время, не могли бы обновлят ето hook.

Я пытался, но к сожалению без результата, то есть, результаты были: Warning: ... )))

Опубликовано:

Найти

 

\#entry

заменить на

 

__p__|\#entry

Опубликовано:
  • Автор

@siv1987, Спасибо!

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.