Опубликовано: 11 июля 20169 г Сделал транслит русских ссылок таким методом (без хука). 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.
Опубликовано: 12 сентября 20196 г Спасибо транслитерация работает, но нет редиректа, т.е. адрес доступен и английский и русский, пример: site.ru/topic/33-tema также открывается по адресам - site.ru/topic/33-тема и даже site.ru/topic/33-tem, site.ru/topic/33-любыебуквы
Опубликовано: 12 сентября 20196 г А до правок был?Не знаю, проверил только вчера увидев в Google вебмастер такие ссылки, по умолчанию этого нет? Сейчас проверю и отпишусь, если проблема не уйдёт думаю дело в .htaccess Изменено 12 сентября 20196 г пользователем ovi8
Опубликовано: 12 сентября 20196 г Всё также, посмотрел на других форумах, у некоторых как здесь числы в урл, у других такая же проблема (если это проблема) как у меня, даже у ibresource также, хм...
Опубликовано: 12 сентября 20196 г Вопрос в if ( $base_url . $_toTest != $newurl AND !preg_match( "/(android 2|msie|trident|safari)/i", $this->member->user_agent ) ) Оставьте для тестов без второго условия if ( $base_url . $_toTest != $newurl )За почти 5 лет много чего поменялось в браузерах. Может уже не нужна данная проверка.
Опубликовано: 12 сентября 20196 г Оставьте для тестов без второго условия if ( $base_url . $_toTest != $newurl )Не получается, показывает error to many redirects и белый экран. Оставлю как было, видимо скоро останутся крупные сайты с программистами в штате, социальные сети и Вордпресс. Это ни в коем случае не упрёк кому бы то ни было :)
Опубликовано: 12 сентября 20196 г Проверил на чистой англ. версии (3.4.9) - работает.Действительно работает, но с правками как в этой теме у меня белый экран, если вернуть к оригиналу всё отлично. Как совместить латинские урл и редирект, а то работает что-то одно, но не вместе. Изменено 12 сентября 20196 г пользователем ovi8
Опубликовано: 12 сентября 20196 г if ( ! $this->settings['use_friendly_urls'] OR ! $seoTitle ) { return FALSE; }после добавить $seoTitle = IPSText::makeSeoTransliterate( $seoTitle );
Сделал транслит русских ссылок таким методом (без хука).
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, '-');Добавить ниже:
Перед сохранением для корректной обработки кириллицы нужно изменить кодировку файла на UTF-8 без BOM.
2. admin\sources\classes\output\publicOutput.php
Найти:
if ( ! ipsRegistry::$settings['use_friendly_urls'] ) { return $url; }Добавить ниже:
Обновить кеш Furl.