Транслитерация русских URL для английской версии IPB 3.4 - Дизайн и модификация Invision Power Board

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

 

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

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

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

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

Страница 1 из 1

Транслитерация русских URL для английской версии IPB 3.4

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 788
  • Регистрация: 27-Март 16
  • Репутация: 51
  • IPB version:3.4.x
 

Отправлено 11 Июль 2016 - 09:01

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

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.
2

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 130
  • Регистрация: 24-Декабрь 15
  • Репутация: 5
  • IPB version:3.4.x
 

Отправлено 12 Сентябрь 2019 - 06:45

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

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

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 974
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 548
  • IPB version:I have no IPB
 

Отправлено 12 Сентябрь 2019 - 07:24

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

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

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

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 130
  • Регистрация: 24-Декабрь 15
  • Репутация: 5
  • IPB version:3.4.x
 

Отправлено 12 Сентябрь 2019 - 08:25

Просмотреть сообщениеnewbie 12 Сентябрь 2019 - 07:24 сказал(а):

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

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

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

Сообщение изменено: ovi8 (12 Сентябрь 2019 - 08:37)

0

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 130
  • Регистрация: 24-Декабрь 15
  • Репутация: 5
  • IPB version:3.4.x
 

Отправлено 12 Сентябрь 2019 - 09:19

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

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

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 974
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 548
  • IPB version:I have no IPB
 

Отправлено 12 Сентябрь 2019 - 09:39

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

Оставьте для тестов без второго условия
				if ( $base_url . $_toTest != $newurl )

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

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 130
  • Регистрация: 24-Декабрь 15
  • Репутация: 5
  • IPB version:3.4.x
 

Отправлено 12 Сентябрь 2019 - 10:13

Просмотреть сообщениеnewbie 12 Сентябрь 2019 - 09:39 сказал(а):

Оставьте для тестов без второго условия
				if ( $base_url . $_toTest != $newurl )


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

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

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

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 974
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 548
  • IPB version:I have no IPB
 

Отправлено 12 Сентябрь 2019 - 10:26

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

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 130
  • Регистрация: 24-Декабрь 15
  • Репутация: 5
  • IPB version:3.4.x
 

Отправлено 12 Сентябрь 2019 - 11:24

Просмотреть сообщениеnewbie 12 Сентябрь 2019 - 10:26 сказал(а):

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

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

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

Сообщение изменено: ovi8 (12 Сентябрь 2019 - 11:27)

0

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

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 974
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 548
  • IPB version:I have no IPB
 

Отправлено 12 Сентябрь 2019 - 11:48

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

после добавить
		$seoTitle = IPSText::makeSeoTransliterate( $seoTitle );		

1

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 130
  • Регистрация: 24-Декабрь 15
  • Репутация: 5
  • IPB version:3.4.x
 

Отправлено 12 Сентябрь 2019 - 13:01

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

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


Страница 1 из 1


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

  

Последние записи в блогах на эту тему

Транслитерация русских URL для английской версии IPB 3.4

От Strategius » в Strategius, на 03 Февраль 2017 - 21:10
Транслитерация русских 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...

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-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна