Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как изменить префикс загружаемых картинок в DLE?

Как изменить префикс загружаемых картинок в DLE?


     14.08.2016    Все вопросы » Общие вопросы по PHP    717

вопрос
Добрый день, подскажите пожалуйста, возможно ли реализовать замену стандартного генерируемого префикса для загружаемых картинок в DLE?

По умолчанию за это отвечает файл engine/classes/uploads/upload.class.php насколько я правильно понял.

Строки 106-107
$file_prefix = time() + rand( 1, 100 );
$file_prefix .= "_";


Строки 208-209
$file_prefix = time() + rand( 1, 100 );
$file_prefix .= "_";


Можно ли переделать таким образом, чтоб вместо этого "1466720101_название-картинки.jpg" выводило id-новости-название-картинки.jpg

Заранее спасибо)

Ответа пока нет


2 комментария

Twelvee
Юзер

Twelvee - 15 августа 2016 12:48 -

Замените код в uploads в обоих случаях на:

            if(isset($_COOKIE['idnext'])){
                $file_prefix = intval($_COOKIE['idnext'])."_";
            }else{
                $file_prefix = time() + rand( 1, 100 );
                $file_prefix .= "_";
            }


Далее, вам необходимо в тех местах, откуда вы добавляете новости (inc и modules) подправить файл addnews.php
Сделать следующее в inc:
после
if( $action == "addnews" ) {

вставить:
if(!isset($_COOKIE['idnext'])){
        $newcookie = $db->super_query("SELECT id FROM ".PREFIX."_post ORDER by id desc");
        setcookie("idnext", $newcookie['id']+1, time()+300);
    }else{
        $tocheckcookie = intval($_COOKIE['idnext']);
        $newcookie = $db->super_query("SELECT id FROM ".PREFIX."_post ORDER by id desc");
        if($newcookie['id'] != $tocheckcookie){
            setcookie("idnext", $newcookie['id']+1, time()+300);
        }
    }


В modules:
после
if( ! $allow_addnews ) {
    
    msgbox( $lang['all_info'], $lang['add_err_9'] . "<br /><br /><a href=\"javascript:history.go(-1)\">$lang[all_prev]</a>" );

} else {

добавить тоже самое:
if(!isset($_COOKIE['idnext'])){
        $newcookie = $db->super_query("SELECT id FROM ".PREFIX."_post ORDER by id desc");
        setcookie("idnext", $newcookie['id']+1, time()+300);
    }else{
        $tocheckcookie = intval($_COOKIE['idnext']);
        $newcookie = $db->super_query("SELECT id FROM ".PREFIX."_post ORDER by id desc");
        if($newcookie['id'] != $tocheckcookie){
            setcookie("idnext", $newcookie['id']+1, time()+300);
        }
    }


Скрипт работает так: Изначально, при входе в добавление новости скрипт добавляет cookie с id последней новости + 1 (как бы id будущей новости). Далее в upload классе он просто берет эту куку. Если ее нет, тогда он просто делает по дефолту.

Так же присмотритесь к этому. Если на сайт загружается много новостей, id может записаться не верным. Но такое редко бывает, ведь не каждую же секунду на сайт грузят тонны новостей. Скорее это понадобится к очень загруженному порталу, или порталу с большим количеством редакторов.

VvelLogin
Юзер

VvelLogin - 15 августа 2016 20:39 -

Спасибо)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх