Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...

Recommended Posts

Может кто делал уже, подскажите, пожалуйста:

Пагинация через темплейты чпу не меняется. А правкой скриптов и редактирования не простой системы ЧПУ вряд ли кто-то стал бы заниматься.

Share this post


Link to post
Share on other sites

Да, сложности. Правил publicOutput, coreVariables + темплейты, но так и не заработало :blink: :D

Тем не менее, форумы по компьютерной и технической тематике в топе яндекса предпочитают формат (но у многих vBulletin):

/t5.html

/t5-2.html

/t5-2.html#post56

А потом уже дополнительные параметры типа короткой ссылки на пост через ?p=56, либо просто #post56.

Ещё так очень часто встречается:

/t5/

/t5-2/

/t5-2/#post56 - этот вариант какой-то неправильный по сравнению с предыдущим с html ;)

Ещё так делают:

/f5/t5p2/ - 5-й форум, 5-й топик, 2-ая страница.

В этом варианте последовательность какая-то присутствует.

 

Если бы так как на vBulletin можно было бы отдельный пост выводить, тогда бы хорошо было сделать так:

хттп://форум.ру/f5/ - 5-й форум

хттп://форум.ру/t5/ - 5-й топик

хттп://форум.ру/t5p2/ - 5-й топик 2-ая страница

хттп://форум.ру/p56/ - 567 пост, выводящийся в VB на отдельных страницах...

 

Но для IPB получается ближе так:

хттп://форум.ру/f5/ - 5-й форум

хттп://форум.ру/t5/ - 5-й топик

хттп://форум.ру/t5/p2/ - 5-й топик 2-ая страница (page-2 = p2/)

хттп://форум.ру/t5/p2/#entry567 - 567 пост на второй странице 5-ой темы.

 

В раздумьях :blink:

 

Очень не нравятся городульки:

хттп://форум.ру/topic5.html/page-2#entry79005

Особенно, когда после html идет / <_<

Можно поставить 'isPagesMode' => 0, и получить вместо слеша знак вопроса, но тогда смысл всего...

Edited by CompForum

Share this post


Link to post
Share on other sites

Тем не менее, форумы по компьютерной и технической тематике в топе яндекса предпочитают формат (но у многих vBulletin):

Предпочитают потому что все это вбуллетин, а там другая система ЧПУ. И вряд ли это зависит от того, чего они предпочитают - на ипб так, и все предпочитают именно так.

 

Если бы так как на vBulletin можно было бы отдельный пост выводить, тогда бы хорошо было сделать так:

Отдельного поста в ипб нету.

Сейчас все наоборот стараются избегать дублей страниц, как отдельная ссылка на пост и тд.

 

Очень не нравятся городульки:

Исключительно личные предпочтения. Пользователям и всем остальным, поверьте, это мало заботит. И, если вы полагаете что сменив тип чпу окажетесь в топе со стопиццот пользователями - боюсь вас сильно разочаровать.

Ру-боард до сих пор на динамических урл-ах сидит.

Share this post


Link to post
Share on other sites

Сделал так:

хттп://forum.ru/f1/ - первая страница подфорума

хттп://forum.ru/f1/page2/ - вторая страница подфорума

хттп://forum.ru/t1/ - первая страница темы

хттп://forum.ru/t1/page2/ - вторая страница темы

хттп://forum.ru/t1/page2/#entry727 - ссылка на 727 пост темы

хттп://forum.ru/userid1/ - ссылка на профиль пользователя

 

 

Изменения в файлах:

 

coreVariables.php

// Найти:
'varPage'  => 'page-',

// Заменить на:
'varPage'  => 'page',

 

ipsRegistry.php

// Найти:
preg_match( '#(' . preg_quote( self::$_seoTemplates['__data__']['varPage'], '#' ) . '(\d+?))(?:$|' . preg_quote( self::$_seoTemplates['__data__']['varBlock'], '#' ) . ')#', $_toTest, $pageMatches );

// Заменить на:
preg_match( '#(' . preg_quote( self::$_seoTemplates['__data__']['varPage'], '#' ) . '(\d+?))/(?:$|' . preg_quote( self::$_seoTemplates['__data__']['varBlock'], '#' ) . ')#', $_toTest, $pageMatches );

 

publicOutput.php

// Найти:
$_page .= $this->seoTemplates['__data__']['varPage'] . $vv;

// Заменить на:
$_page .= $this->seoTemplates['__data__']['varPage'] . $vv . '/';


// Найти:
$_toTest = preg_replace( '#^(.*)/(.)?#', '\1/' . $this->seoTemplates['__data__']['varPage'] . $page . '\2', $_toTest );

// Заменить на:
$_toTest = preg_replace( '#^(.*)/(.)?#', '\1/' . $this->seoTemplates['__data__']['varPage'] . $page . '/\2', $_toTest );


// Найти:
preg_match( '#(' . preg_quote( $this->seoTemplates['__data__']['varPage'], '#' ) . '(\d+?))(?:$|' . preg_quote( $this->seoTemplates['__data__']['varBlock'], '#' ) . ')#', $_toTest, $pageMatches );

// Заменить на:
preg_match( '#(' . preg_quote( $this->seoTemplates['__data__']['varPage'], '#' ) . '(\d+?))/(?:$|' . preg_quote( $this->seoTemplates['__data__']['varBlock'], '#' ) . ')#', $_toTest, $pageMatches );

 

sitemapgenerator.php

// Найти:
$_page .= self::$_seoTemplates['__data__']['varPage'] . $vv;

// Заменить на:
$_page .= self::$_seoTemplates['__data__']['varPage'] . $vv . '/';

 

furlTemplates.php (из members)

// Найти:
'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' ) ) ) ),

// Заменить на:
'showuser'	=> array( 'app'		      => 'members',
					  'allowRedirect' => 1,
					  'out'           => array( '#showuser=(\d+)((?:&|&)f=(\d+))?(&|$)#i', 'userid$1/$2$4' ),
					  'in'            => array( 'regex'   => "#^/userid(\d+)#i",
											    'matches' => array( array( 'showuser', '$1' ) ) ) ),

 

furlTemplates.php (из forums)

// Найти:
$_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,
						  'isPagesMode'   => 1,
						  'out'           => array( '#showforum=(.+?)(&|$)#i', 'forum/$1-#{__title__}/$2' ),
						  'in'            => array( 'regex'   => '#^/forum/(\d+?)-#i',
												    'matches' => array( array( 'showforum', '$1' ) ) ) ),


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

'acteqst'       => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'out'           => array( '#act=ST(.*?)&t=(.+?)(&|$)#i', 'topic/$2-#{__title__}/$3' ),
						  'in'            => array( 'regex'   => '#^notavalidrequest$#i',
											        'matches' => array( array( 'showtopic', '0' ) ) ) ),

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

// Заменить на:
$_SEOTEMPLATES = array(

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

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


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

'acteqst'       => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'out'           => array( '#act=ST(.*?)&t=(\d+)(&|$)#i', 't$2/$3' ),
						  'in'            => array( 'regex'   => '#^notavalidrequest$#i',
											        'matches' => array( array( 'showtopic', '0' ) ) ) ),

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

 

Особо не проверял, вроде бы работает B)

  • Upvote 2

Share this post


Link to post
Share on other sites

Вторая замена в publicOutput.php для версии IPB 3.4.3 будет такой:

// Найти:
$_toTest = preg_replace( '#^(.*)/(.)?#', '\1/page-' . $page . '\2', $_toTest );

// Заменить на:
$_toTest = preg_replace( '#^(.*)/(.)?#', '\1/page' . $page . '/\2', $_toTest );

Share this post


Link to post
Share on other sites

прошу помощи:

версия 3.4.5 IPS, необходимо изменить ссылки с кирилицы на транслит

 

заранее благодарен

Share this post


Link to post
Share on other sites

прошу прощения - чуть позже нашел хук

Share this post


Link to post
Share on other sites

Хочу изменить ссылку на Правила форума, чтобы они не были жуткого вида index.php?app=forums&module=extras&section=boardrules, а попроще /boardrules

 

Вписал в furltemplates:

'boardrules'	=> array(  'app'		   => 'forums',
		   'allowRedirect' => 0,
                          'out'		   => array( '#app=forums(&|&)module=extras(&|&)section=boardrules(&|&|?)#i', 'boardrules/' ),
		   'in'			   => array( 'regex'		=> "#/boardrules(/|$|\?)#i",
						     'matches'	=> array( array( 'app', 'forums' ),
									   array( 'module', 'extras' ),
									   array( 'section', 'boardrules' )																		  )
											) 
								),

При прямом заходе на /boardrules все работает, но ссылка на главной странице не парсится и по-прежнему выводится кривой. Чего-то я не доделал явно. Кстати, а название правила (в данном случае имя массива boardrules) оно вообще имеет значение и куда-то еще вносится, кроме файла furlTemplates.php?

Share this post


Link to post
Share on other sites

К ссылки boardrules не применяется чпу преобразование.

 

1. admin\applications\forums\extensions\furlTemplates.php

'boardrules' => array(
	'app'           => 'forums',
	'allowRedirect' => 0,
	'out'           => array( '#app=forums(?:&|&)module=extras(?:&|&)section=boardrules#i', 'boardrules/' ),
	'in'            => array( 'regex'   => '#/boardrules/#i',
							 'matches'  => array( array( 'app', 'forums' ), array( 'module', 'extras' ), array( 'section', 'boardrules' ) ) ) ),

 

2. Перестроить кеш чпу

 

3. Внешний вид -> Шаблон -> globalTemplate

Найти

{parse url="app=forums&module=extras&section=boardrules" base="public"}

Заменить

{parse url="app=forums&module=extras&section=boardrules" base="public" seotitle="boardrules" template="boardrules"}

  • Upvote 2

Share this post


Link to post
Share on other sites

Подскажите как сделать что-бы был такой адрес,дапустим я создал тему рецепта Лосось с апельсиновым джемом,мне нужно что-бы адрес был такой http:адрес сайта/forum/losos_s_apelsinovym_djemom

как это сделать

Share this post


Link to post
Share on other sites

Никак. Только с ид

/topic/%id-lososi-s-apelsinon.html

 

.html можно убрать, ид в конце переместить,но без него никак.

Share this post


Link to post
Share on other sites

Кстати в ЧПУ есть можно так сказать дыра в безопасности. Если ссылка на тему или раздел имеет вид к примеру http://домен/topic/ид темы-название темы/ то посетитель не имея доступа к такой теме (разделу) с лёгкость может прочитать его.

Считаю это дырой в безопасности.

Share this post


Link to post
Share on other sites

Если дыра и есть, то это не в чпу, так как чпу только парсит параметры из урл'а. За проверкой прав отвечают другие функции. О таком баге что можно зайти в тему без прав слышу впервые. Был такой, но он касался ответов и не имел отношения к чпу.

Share this post


Link to post
Share on other sites

О таком баге что можно зайти в тему без прав слышу впервые.

Вы не так меня поняли. Зайти в тему конечно невозможно, а вот прочитать её название с ЧПУ - легко.

 

За проверкой прав отвечают другие функции.

Странно что разрабы не предусмотрели это. Скажем при заходе в такую тему что бы был редирект на страницу ошибки.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...