Транслит для тегов

Транслит для тегов

Хак поможет сделать вывод русских символов в url тегов - транслитом.


Установка:
1. Открыть engine/modules/functions.php и найти:
function totranslit

Добавить выше:
function convert_to_rus($val) {
	global $config;
	if(strtolower($config['charset']) != "utf-8")
		$val = mb_convert_encoding($val, 'CP1251');
    return strtr($val, array(
			'a' => 'а', 'b' => 'б', 'v' => 'в',
			'g' => 'г', 'd' => 'д', 'e' => 'е',
			'ie' => 'ё', 'zh' => 'ж', 'z' => 'з',
			'i' => 'и', 'yi' => 'й', 'k' => 'к',
			'l' => 'л', 'm' => 'м', 'n' => 'н',
			'o' => 'о', 'p' => 'п', 'r' => 'р',
			's' => 'с', 't' => 'т', 'u' => 'у',
			'f' => 'ф', 'h' => 'х', 'c' => 'ц',
			'ch' => 'ч', 'sh' => 'ш', 'sch' => 'щ',
			'-' => 'ь', 'y' => 'ы', '_' => 'ъ',
			'ei' => 'э', 'yu' => 'ю', 'ya' => 'я',
			
			'A' => 'А', 'B' => 'Б', 'V' => 'В',
			'G' => 'Г', 'D' => 'Д', 'E' => 'Е',
			'IE' => 'Ё', 'Zh' => 'Ж', 'Z' => 'З',
			'I' => 'И', 'YI' => 'Й', 'K' => 'К',
			'L' => 'Л', 'M' => 'М', 'N' => 'Н',
			'O' => 'О', 'P' => 'П', 'R' => 'Р',
			'S' => 'С', 'T' => 'Т', 'U' => 'У',
			'F' => 'Ф', 'H' => 'Х', 'C' => 'Ц',
			'Ch' => 'Ч', 'Sh' => 'Ш', 'Sch' => 'Щ',
			'Y' => 'Ы', 'EI' => 'Э', 'Yu' => 'Ю', 'Ya' => 'Я'
		)
    );
}

function convert_to_eng($val) {
    return strtr($val, array(
		'а' => 'a', 'б' => 'b', 'в' => 'v',
		'г' => 'g', 'д' => 'd', 'е' => 'e',
		'ё' => 'ie', 'ж' => 'zh', 'з' => 'z',
		'и' => 'i', 'й' => 'yi', 'к' => 'k',
		'л' => 'l', 'м' => 'm', 'н' => 'n',
		'о' => 'o', 'п' => 'p', 'р' => 'r',
		'с' => 's', 'т' => 't', 'у' => 'u',
		'ф' => 'f', 'х' => 'h', 'ц' => 'c',
		'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
		'ь' => '-', 'ы' => 'y', 'ъ' => '_',
		'э' => 'ei', 'ю' => 'yu', 'я' => 'ya',

		'А' => 'A', 'Б' => 'B', 'В' => 'V',
		'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
		'Ё' => 'IE', 'Ж' => 'Zh', 'З' => 'Z',
		'И' => 'I', 'Й' => 'YI', 'К' => 'K',
		'Л' => 'L', 'М' => 'M', 'Н' => 'N',
		'О' => 'O', 'П' => 'P', 'Р' => 'R',
		'С' => 'S', 'Т' => 'T', 'У' => 'U',
		'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
		'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
		'Ь' => '-', 'Ы' => 'Y', 'Ъ' => '_',
		'Э' => 'EI', 'Ю' => 'Yu', 'Я' => 'Ya',
    ));
}

2. Открыть engine/modules/show.full.php, show.short.php, show.custom.php и найти:
"tags/" . urlencode( $value )

Заменить на:
"tags/" . urlencode( convert_to_eng($value) )

3. Открыть engine/engine.php и найти:
$tag = @$db->safesql ( $tag );

Заменить на:
$eng_tag = convert_to_eng($tag);
if($eng_tag != $tag) {
	$url_eng_tag = $config['http_home_url'] . "tags/" . urlencode ( $eng_tag ) ."/";
	header("HTTP/1.0 301 Moved Permanently");
	header("Location: {$url_eng_tag}");
	die("Redirect");
}
$tag = @$db->safesql ( convert_to_rus($tag) );

Найти далее:
$url_page = $config['http_home_url'] . "tags/" . urlencode ( $tag );

Заменить на:
$url_page = $config['http_home_url'] . "tags/" . urlencode ( $eng_tag );

4. Открыть engine/modules/tagscloud.php и найти 2 раза:
"tags/".urlencode($value['tag'])

Заменить на:
"tags/".urlencode(convert_to_eng($value['tag']))

Готово!
 
Версия DLE: 12.1
Автор: PunPun
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.