Названия загружаемых картинок на DLE сделать на русском - Webmasters.ru - RSS
http://webmasters.ru/forum/showthread.php?t=49997
SEO форум вебмастеров - Поисковые системы, оптимизация, раскрутка сайта, оптимизация и продвижение сайта в поисковых системах1743358197Elesite CMS60http://webmasters.ru/forum/images/wm/misc/rss.pngSEO форум вебмастеров Webmasters.ru
http://webmasters.ru/forum
Названия загружаемых картинок на DLE сделать на русском by anjunaboy
http://webmasters.ru/forum/showpost.php?p=525538
Fri, 11 Oct 2013 10:53:36 GMTКак при загрузке картинок сделать так чтобы названия автоматом оставались на русском? а не так как на скрине:
11820Названия загружаемых картинок на DLE сделать на русском by OKyJIucT
http://webmasters.ru/forum/showpost.php?p=525558
Fri, 11 Oct 2013 12:15:14 GMTДля этого надо подправить файл engine/classes/uploads/upload.class.php, там есть функция totranslit, которая и отвечает за создание названия файлов и перевода их названия в транслит. Пример строки из этого файла с данной функцией
$filename = totranslit( $file_prefix.$filename );
Эта функция вызывается в нескольких местах, поэтому заменить надо именно эту строку (данная функция встречается еще в нескольких местах в другом контексте, там ее трогать не надо).
она выглядит примерно так (может отличаться, в зависимости от версии)
function totranslit($var, $lower = true, $punkt = true) { global $langtranslit;
if ( is_array($var) ) return "";
if (!is_array ( $langtranslit ) OR !count( $langtranslit ) ) {
$var = trim( strip_tags( $var ) );
if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );
$var = preg_replace( '#[.]+#i', '.', $var );
$var = str_ireplace( ".php", ".ppp", $var );
if ( $lower ) $var = strtolower( $var );
return $var;
}
$var = trim( strip_tags( $var ) );
$var = preg_replace( "/\s+/ms", "-", $var );
$var = str_replace( "/", "-", $var );
$var = strtr($var, $langtranslit);
if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );
$var = preg_replace( '#[\-]+#i', '-', $var );
$var = preg_replace( '#[.]+#i', '.', $var );
if ( $lower ) $var = strtolower( $var );
$var = str_ireplace( ".php", "", $var );
$var = str_ireplace( ".php", ".ppp", $var );
if( strlen( $var ) > 200 ) {
$var = substr( $var, 0, 200 );
if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );
}
return $var;
}
как вариант, можете создать аналог этой функции для загрузки файлов, назвать ее, скажем, notranslit, с таким же содержимым, что и функция totranslit, только закомментируйте строку, которая отвечает за замену символов кириллицы на латинницу (эта строка выглядит вот так $var = strtr($var, $langtranslit);), то есть вот так
function notranslit($var, $lower = true, $punkt = true) { global $langtranslit;
if ( is_array($var) ) return "";
if (!is_array ( $langtranslit ) OR !count( $langtranslit ) ) {
$var = trim( strip_tags( $var ) );
if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );
$var = preg_replace( '#[.]+#i', '.', $var );
$var = str_ireplace( ".php", ".ppp", $var );
if ( $lower ) $var = strtolower( $var );
return $var;
}
$var = trim( strip_tags( $var ) );
$var = preg_replace( "/\s+/ms", "-", $var );
$var = str_replace( "/", "-", $var );
//$var = strtr($var, $langtranslit);
if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );
$var = preg_replace( '#[\-]+#i', '-', $var );
$var = preg_replace( '#[.]+#i', '.', $var );
if ( $lower ) $var = strtolower( $var );
$var = str_ireplace( ".php", "", $var );
$var = str_ireplace( ".php", ".ppp", $var );
if( strlen( $var ) > 200 ) {
$var = substr( $var, 0, 200 );
if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );
}
return $var;
}
которая и отвечает за замену кириллицы латинницей.
Данная функция находится в engine/modules/function.php
Итак, подведем итог:
заходим в файл engine/classes/uploads/upload.class.php и заменяем там totranslit на notranslit
Заходим в engine/modules/function.php и копируем функцию totranslit и называем ее notranslit
И все, после этих действий названия загружаемых картинок должны быть на русском. На практике не проверял, но в теории должно работать:) Это способ на скорую руку, наверняка новую функцию можно подчистить от лишнего кода, но и с ним работать будет так же.
Кроме того, не факт, что используя данный способ, картинки будут нормально отображаться в UTF-8 версии движка, в любом случае надо пробовать:) 200 ) {
$var = substr( $var, 0, 200 );
if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );
}
return $var;
}
как вариант, можете создать аналог этой функции для загрузки файлов, назвать ее, скажем, notranslit, с таким же содержимым, что и функция totranslit, только закомментируйте строку, которая отвечает за замену символов кириллицы на латинницу (эта строка выглядит вот так $var = strtr($var, $langtranslit);), то есть вот так
function notranslit($var, $lower = true, $punkt = true) { global $langtranslit;
if ( is_array($var) ) return "";
if (!is_array ( $langtranslit ) OR !count( $langtranslit ) ) {
$var = trim( strip_tags( $var ) );
if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );
$var = preg_replace( '#[.]+#i', '.', $var );
$var = str_ireplace( ".php", ".ppp", $var );
if ( $lower ) $var = strtolower( $var );
return $var;
}
$var = trim( strip_tags( $var ) );
$var = preg_replace( "/\s+/ms", "-", $var );
$var = str_replace( "/", "-", $var );
//$var = strtr($var, $langtranslit);
if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );
$var = preg_replace( '#[\-]+#i', '-', $var );
$var = preg_replace( '#[.]+#i', '.', $var );
if ( $lower ) $var = strtolower( $var );
$var = str_ireplace( ".php", "", $var );
$var = str_ireplace( ".php", ".ppp", $var );
if( strlen( $var ) > 200 ) {
$var = substr( $var, 0, 200 );
if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );
}
return $var;
}
которая и отвечает за замену кириллицы латинницей.
Данная функция находится в engine/modules/function.php
Итак, подведем итог:
заходим в файл engine/classes/uploads/upload.class.php и заменяем там totranslit на notranslit
Заходим в engine/modules/function.php и копируем функцию totranslit и называем ее notranslit
И все, после этих действий названия загружаемых картинок должны быть на русском. На практике не проверял, но в теории должно работать:) Это способ на скорую руку, наверняка новую функцию можно подчистить от лишнего кода, но и с ним работать будет так же.
Кроме того, не факт, что используя данный способ, картинки будут нормально отображаться в UTF-8 версии движка, в любом случае надо пробовать:)]]>