Перейти к публикации
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.

ЧПУ для IPB 3.x

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

Скажите, есть у кого ЧПУ короткие как на этом форуме или может Fisana у вас есть хук на продажу? Спасибо.

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

Опубликовано:
что сделал не так ?

Во первых 'out' и 'in' не совпадают по шаблону, т.е. чпу формируется по одному типу, а вход ('in') получается по другому.

Во вторых, формат forum$1-#{__title__}.html$2 и так по умолчанию, ничего менять не надо.

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

проще сказать стандартные выводи формирования с слешем / на конце хочу сделать с .html

Например есть forum/$1-#{__title__}/$2 а хочу сделать forum/$1-#{__title__}.html$2

 

http://*****.net/forum/4-novini-rahvshini/ а нужно http://*****.net/forum/4-novini-rahvshini.html

Изменено пользователем komp

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

тогда так

 

   'showforum'     => array( 'app'              => 'forums',
                             'allowRedirect' => 1,
                             'out'           => array( '#showforum=(.+?)(&|$)#i', 'forum$1-#{__title__}.html$2' ),
                             'in'            => array( 'regex'   => "#/forum(\d+)-#i",
                                                       'matches' => array( array( 'showforum', '$1' ) ) ) ),

   'showtopic'     => array( 'app'              => 'forums',
                             'allowRedirect' => 1,
                             'out'           => array( '#showtopic=(.+?)(&|$)#i', 'topic$1-#{__title__}.html$2' ),
                             'in'            => array( 'regex'   => "#/topic(\d+)-#i",
                                                       'matches' => array( array( 'showtopic', '$1' ) ) ) ),

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

Как сделать ссылки вида

topic/1781

Убрали в версии 3.2.2 с файла initdata.php

Для константы IPB_USE_ONLY_ID_FURL установить TRUE

 

Как теперь сделать такое?

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

Переписать шаблон под себя

/admin/applications/forums/extensions/furlTemplate.php

 

ONLY_ID_FURL в 3.2 больше нету.

 

Примерно для ID_FURL

-#{__title__} => удалить
(\d+?)-       => (\d+?)

 

Что будет работать не гарантирую

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

Так теперь в этом фале только для юзеров

<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.2
* Sets up SEO templates
* Last Updated: $Date: 2011-04-11 06:49:17 -0400 (Mon, 11 Apr 2011) $
* </pre>
*
* @author 		$Author: mmecham $
* @copyright	(c) 2001 - 2009 Invision Power Services, Inc.
* @package		IP.Board
* @subpackage	Members
* @since		20th February 2002
* @version		$Rev: 8294 $
*
*/

if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}

/**
* SEO templates
*
* 'allowRedirect' is a flag to tell IP.Board whether to check the incoming link and if not formatted correctly, redirect the correct one
*
* OUT FORMAT REGEX:
* First array element is a regex to run to see if we've a match for the URL
* The second array element is the template to use the results of the parenthesis capture
*
* Special variable #{__title__} is replaced with the $title data passed to output->formatUrl( $url, $title)
*
* IMPORTANT: Remember that when these regex are used, the output has not been fully parsed so you will get:
* showuser={$data['member_id']} NOT showuser=1 so do not try and match numerics only!
*
* IN FORMAT REGEX
*
* This allows the registry to piece back together a URL based on the template regex
* So, for example: "/user/(\d+?)/", 'matches' => array(  array( 'showuser' => '$1' ) )tells IP.Board to populate 'showuser' with the result
* of the parenthesis capture #1
*/
$_SEOTEMPLATES = array(

'showuser'	=> array( 'app'		      => 'members',
					  'allowRedirect' => 1,
					  'out'           => array( '#showuser=(.+?)((?:&|&)f=(.+?))?(&|$)#i', 'user/$1-#{__title__}/$2$4' ),
					  'in'            => array( 'regex'   => "#/user/(\d+?)-#i",
											    'matches' => array( array( 'showuser', '$1' ) ) ) ),


'members_status_single' => array( 'app'		      => 'members',
								  'allowRedirect' => 0,
								  'out'           => array( '#app=members(?:&|&)module=profile(?:&|&)section=status(?:&|&)type=single(?:&|&)status_id=(\d+?)(&|$)#i', 'statuses/id/$1/$2' ),
								  'in'            => array( 'regex'   => "#/statuses/id/(\d+?)/#i",
														    'matches' => array( array( 'app'    , 'members' ),
														    					array( 'section', 'status' ),
														    					array( 'module' , 'profile' ),
														    					array( 'type'   , 'single' ),
														    					array( 'status_id', '$1' ) ) ) ),

'members_status_friends'=> array( 'app'		      => 'members',
								  'allowRedirect' => 0,
								  'out'           => array( '#app=members(?:&|&)module=profile(?:&|&)section=status(?:&|&)type=friends(&|$)#i', 'statuses/friends/$2' ),
								  'in'            => array( 'regex'   => "#/statuses/friends#i",
														    'matches' => array( array( 'app'    , 'members' ),
														    					array( 'section', 'status' ),
														    					array( 'module' , 'profile' ),
														    					array( 'type'   , 'friends' ) ) ) ),

'members_status_all'	=> array( 'app'		      => 'members',
								  'allowRedirect' => 0,
								  'out'           => array( '#app=members(?:&|&)module=profile(?:&|&)section=status((?:&|&)type=all)?(&|$)#i', 'statuses/all/$2' ),
								  'in'            => array( 'regex'   => "#/statuses/all#i",
														    'matches' => array( array( 'app'    , 'members' ),
														    					array( 'section', 'status' ),
														    					array( 'module' , 'profile'  ) ) ) ),


'members_list'  => array( 
					'app'			=> 'members',
					'allowRedirect' => 0,
					'out'			=> array( '#app=members((&|&)module=list)?#i', 'members/' ),
					'in'			=> array( 
												'regex'		=> "#/members(/|$|\?)#i",
												'matches'	=> array( array( 'app', 'members' ),
																	  array( 'module', 'list' )  )
											) 
								),
);

Сори понял что надо смотреть в \admin\applications\forums\extensions\

Изменено пользователем Vitalik-x

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

Хм, не прокатило. Может подскажите как выполнить запрос в базу для изменения во всех сообщениях ссылки вида topic/1781, сделать index.php?showtopic=29435.

А то всё время надо будет искать и делать не понять что! Что то разработчики вообще об приятном виде ссылок не задумывались.

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

Изменил на стандартный и выполнил запрос

UPDATE ibf_posts
SET post = REPLACE (post, 'http://форум/topic/', 'http://форум/index.php?showtopic=');
UPDATE ibf_posts
SET post = REPLACE (post, 'http://форум/forum/', 'http://форум/index.php?showforum=');

 

Если надо можете изменить как вам надо.

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

Vitalik-x, сформируйте плз хук для IPB 3.2.x

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

А что, много пользы от модификации кэша FURL?

 

Все равно все новые темы будут создаваться по шаблонам. Да и при редактировании названия тем тоже кэши сбрасываются... Не говоря уже о кнопке "Сбросить FURL кэш" в АЦ :)

 

@Vitalik-x, 3.2.2 не сильно отличается от 3.2.0, а в плане FURL - и от 3.1.4. Возьмите старые fulIdTemplates (кажется, так назывались модифицированные IBR наборы?) из 3.1.4, и сравнивайте их с furlTemplates из 3.2.2. Там все достаточно просто, сделать на ipbskins.ru текущие ЧПУ заняло у меня когда-то минут 10 времени.

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

Ребят, сделал значит все, норм работает, только вот когда ставлю в настройках форума: Тип обработки неверных URL > Перенаправлять на правильный URL (301), форум главная нормально открывается а вот форумы и темы нет, тупо просто не открывает страницы, может кто подскажет в чем трабла?

Версия 3.1.X

Изменено пользователем idGreen

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

Какой код в fulrTemplates для форумов и тем?

 

	'showforum'     => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'out'           => array( '#showforum=(.+?)(&|$)#i', 'forum$1.html$2' ),
						  'in'            => array( 'regex'   => '#^/forum(\d+?)\.html#i',
												    'matches' => array( array( 'showforum', '$1' ) ) ) ),

'showtopic'     => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'out'           => array( '#showtopic=(.+?)(&|$)#i', 'topic$1.html$2' ),
						  'in'            => array( 'regex'   => '#^/topic(\d+?)\.html#i',
											        'matches' => array( array( 'showtopic', '$1' ) ) ) ),

  • 2 недели спустя...
Опубликовано:

Какой код в fulrTemplates для форумов и тем?

 

	'showforum'     => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'out'           => array( '#showforum=(.+?)(&|$)#i', 'forum$1.html$2' ),
						  'in'            => array( 'regex'   => '#^/forum(\d+?)\.html#i',
												    'matches' => array( array( 'showforum', '$1' ) ) ) ),

'showtopic'     => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'out'           => array( '#showtopic=(.+?)(&|$)#i', 'topic$1.html$2' ),
						  'in'            => array( 'regex'   => '#^/topic(\d+?)\.html#i',
											        'matches' => array( array( 'showtopic', '$1' ) ) ) ),

 

Вот что у меня

$_SEOTEMPLATES = array(

'showannouncement'     => array( 'app'		     => 'forums',
								 'allowRedirect' => 1,
								 'out'           => array( '#showannouncement=(.+?)((?:&|&)f=(.+?))?(&|$)#i', 'forum-$3/announcement-$1-#{__title__}/$4' ),
						  		 'in'            => array( 'regex'   => "#/forum-(\d+?)?/announcement-(\d+?)-#i",
												 		   'matches' => array( array( 'showannouncement', '$2' ), array( 'f', '$1' ) ) ) ),

   'showforum'     => array( 'app'              => 'forums',
                             'allowRedirect' => 1,
                             'out'           => array( '#showforum=(.+?)(&|$)#i', 'forum$1.html$2' ),
                             'in'            => array( 'regex'   => "#/forum(\d+?).html#i",
                                                       'matches' => array( array( 'showforum', '$1' ) ) ) ),

   'showtopic'     => array( 'app'              => 'forums',
                             'allowRedirect' => 1,
                             'out'           => array( '#showtopic=(.+?)(&|$)#i', 'topic$1.html$2' ),
                             'in'            => array( 'regex'   => "#/topic(\d+?).html#i",
													'matches' => array( array( 'showtopic', '$1' ) ) ) ),

   'act=idx'       => array( 'app'              => 'forums',
                             'allowRedirect' => 0,
                             'out'           => array( '#act=idx(&|$)#i', 'index.html$1' ),
                             'in'            => array( 'regex'   => "#/index.html(/|$|\?)#i",
                                                       'matches' => array( array( 'act', 'idx' ) ) ) ),

Изменено пользователем idGreen

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

Всем привет, прошу помощи с ЧПУ для ссылок на профили пользователей.

 

На данный момент сделал вид: /user/1/ - вместо 1, ID пользователя.

В принципе все нормально работает, за исключением одной проблемы. ID пользователя обрезается до первой цифры. Например: ID 21 , при переходе на профиль этого пользователя оно делает редирект на пользователя с ID 2.

 

Может кто нибудь сталкивался с подобной проблемой? уже 3 часа бьюсь и не могу исправить.

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

Вместо:

 'in'            => array( 'regex'   => "#/user/(\d+?)#i",

 

(как вы наверняка сделали), надо:

 'in'            => array( 'regex'   => "#/user/(\d+?)(/|$)#i",

 

И перестроить кеш ЧПУ.

 

Народ!

Не лезьте в регулярки, хотя бы не ознакомившись с базовыми принципами их работы:)

 

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

 

Мелкая ошибка в регулярке furlTemplates может привести к потере доступности половины страниц вашего сайта, и вы это даже не сразу заметите. Оно вам точно надо?

 

Если очень хочется сделать красивые url-ы - просмотрите темку - найдите готовые рабочие примеры. Или запросите помощи в написании.

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

Сейчас на странице 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.