Названия загружаемых картинок на DLE сделать на русском

(Ответов: 1, Просмотров: 1416)
  1. Новичок Аватар для anjunaboy
    • Регистрация: 07.03.2010
    • Сообщений: 23
    • Репутация: 10
    Как при загрузке картинок сделать так чтобы названия автоматом оставались на русском? а не так как на скрине:

    Нажмите на изображение для увеличения.  Название:	??????????.jpg  Просмотров:	6  Размер:	38.9 Кб  ID:	11820
    • 0
  2. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    Для этого надо подправить файл 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 версии движка, в любом случае надо пробовать:)
    Последний раз редактировалось OKyJIucT; 11.10.2013 в 17:18.
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Подскажите как сделать ротацию картинок.
Web программирование 5 03.10.2013 23:39
Где добавить расширения загружаемых файлов?
DLE 2 25.05.2013 10:54
Необычные названия доменов. Я бы взял gad.com
Оффтоп и свободные темы 7 21.01.2013 23:01
Оцените названия домена
Оффтоп и свободные темы 7 05.01.2012 21:24
Проблема с выводом названия поста.
Оффтоп и свободные темы 5 21.09.2011 00:56

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры