Перейти к публикации
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 для английской версии IPB 3.4

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

Сделал транслит русских ссылок таким методом (без хука).

 

P.S. - для английской версии IPB 3.4

 

1. admin\sources\base\core.php

 

Найти:

 

	elseif ( strtolower( IPS_DOC_CHAR_SET ) == 'utf-8' )
	{
		$string = utf8_encode( $string );
	}

	return $string;
}

Добавить ниже:

 

	static public function monthNameRu2En( $text )
{

		return str_replace( array('Январь','Февраль','Март','Апрель','Май','Июнь,','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'), array('January','February','March','April','May','June','July','August','September','October','November','December'), $text );
}

static public function transliterate( $text )
{
	return str_replace( array('а','б','в','г','ґ','д','е','є','ё','ж','з','и','і','ї','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','э','ю','я','ы','ь','ъ'), array('a','b','v','g','g','d','e','e','yo','zh','z','i','i','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sch','e','yu','ya','y','','j'), $text);

}

static public function makeSeoTransliterate( $text )
{
	if  (!IPB_USE_SEO_TRANSLIT )
	{
		return $text;
	}

	if ((is_array($text)) && (count($text)))
	{ 
		foreach( $text as $titlefortranslit)
		{
			$titlefortranslit = self::makeSeoTransliterate( $titlefortranslit );
		}
		return $text;

	}
	else
	{

		$text = urldecode($text);

		$text = self::transliterate( $text );

		$text = preg_replace('#[^a-z0-9-.]#', '', $text);

		$text = urlencode($text);
	}

	return $text;

}

Найти:

 

	$text = preg_replace( "#-{2,}#", '-', $text );
	$text = trim($text, '-');

Добавить ниже:

 

		$text = self::makeSeoTransliterate( $text );

Перед сохранением для корректной обработки кириллицы нужно изменить кодировку файла на UTF-8 без BOM.

 

2. admin\sources\classes\output\publicOutput.php

 

Найти:

 

if ( ! ipsRegistry::$settings['use_friendly_urls'] )
{
return $url;
}

Добавить ниже:

 

$seoTitle = IPSText::makeSeoTransliterate( $seoTitle );

Обновить кеш Furl.

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

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

Спасибо транслитерация работает, но нет редиректа, т.е. адрес доступен и английский и русский, пример: site.ru/topic/33-tema также открывается по адресам - site.ru/topic/33-тема и даже site.ru/topic/33-tem, site.ru/topic/33-любыебуквы

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

но нет редиректа,

А до правок был?

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

А до правок был?

Не знаю, проверил только вчера увидев в Google вебмастер такие ссылки, по умолчанию этого нет?

 

Сейчас проверю и отпишусь, если проблема не уйдёт думаю дело в .htaccess

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

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

Всё также, посмотрел на других форумах, у некоторых как здесь числы в урл, у других такая же проблема (если это проблема) как у меня, даже у ibresource также, хм...

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

Вопрос в

				if ( $base_url . $_toTest != $newurl AND !preg_match( "/(android 2|msie|trident|safari)/i", $this->member->user_agent ) )

Оставьте для тестов без второго условия

				if ( $base_url . $_toTest != $newurl )

За почти 5 лет много чего поменялось в браузерах. Может уже не нужна данная проверка.

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

Оставьте для тестов без второго условия

				if ( $base_url . $_toTest != $newurl )

Не получается, показывает error to many redirects и белый экран.

 

Оставлю как было, видимо скоро останутся крупные сайты с программистами в штате, социальные сети и Вордпресс. Это ни в коем случае не упрёк кому бы то ни было :)

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

Проверил на чистой англ. версии (3.4.9) - работает.

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

Проверил на чистой англ. версии (3.4.9) - работает.

Действительно работает, но с правками как в этой теме у меня белый экран, если вернуть к оригиналу всё отлично.

 

Как совместить латинские урл и редирект, а то работает что-то одно, но не вместе.

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

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

		if ( ! $this->settings['use_friendly_urls'] OR ! $seoTitle )
	{
		return FALSE;
	}

после добавить

		$seoTitle = IPSText::makeSeoTransliterate( $seoTitle );		

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

Большое спасибо, работает :rolleyes:

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

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