• Автор:

    Flesha
  • Добавлено:

    май 05, 2014
  • Комментариев:

    6
  • Просмотров:

    3 267

Хак Добавление картинок в доп. поля

Хак Добавление картинок в доп. поля

Этот бесплатный хак позволит вам загружать картинки с компьютера или же с удаленного URL'a в дополнительные поля для дле. Принцип работы очень прост: в форме добавления новостей или вставляем ссылку на картинку с любого сайта, или загружаем ее кликнув на жёлтую папочку возле поля. Когда вы добавляете новость, то вместе с формой новости загружаются и картинки. В дополнительном поле хранится прямая ссылка на эту картинку. Установка всего лишь в 4 пункта. Тестировалось на DLE 10.1 и DLE 10.2

Установка:
1. Создаем дополнительное поле для новостей:
-Название поля: обязательно должно начинаться с imgfield_ВАШЕНАЗВАНИЕ
-Тип: Одна строка

2. В файлах engine/inc/editnews.php, engine/inc/addnews.php, engine/modules/addnews.php Найти:
form


Заменить на:
form enctype=\"multipart/form-data\"


3. Открываем файл engine/inc/xfields.php Найти:
elseif ($value[3] == "text") {

$fieldvalue = str_replace('"', '"', $fieldvalue);
$fieldvalue = str_replace('&', '&', $fieldvalue);

if (!$value[5]) {
$params = "rel=\"essential\" ";
$uid = "uid=\"essential\" ";

} else {

$params = "";
$uid = "";

}


Ниже вставить:
 if(stripos($fieldname, 'imgfield_') !== false) {

$imgfile = '&nbsp;<label for="imgfieldfile_'.$fieldname.'"><img title="Загрузка изображений на сервер" src="engine/skins/images/folder_open.png" border="0" style="cursor:pointer;"></label><input type="file" name="imgfieldfile_'.$fieldname.'" id="imgfieldfile_'.$fieldname.'" style="display: none;"/>';

} else { $imgfile=''; }


Ниже по коду найти:
} elseif ( $postedxfields[$value[0]] != "" ) { 


Заменить на:
 //Проверка если поле урлом
} elseif ( $postedxfields[$value[0]] != "" AND stripos($value[0], 'imgfield_') !== false AND !$_POST['imgfieldfile_'.$value[0]] ) {

//Проверка если картинка уже загружена
if(stripos($postedxfields[$value[0]], $config['https_home_url']) !== false) {

$newpostedxfields[$value[0]] = $postedxfields[$value[0]];

} else {

define( 'FOLDER_PREFIX', date( "Y-m" ) );
if( ! is_dir( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX ) ) {
@mkdir( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX, 0777 );
@chmod( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX, 0777 );
}

$config_path_image_upload = ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX . "/";
$allowed_extensions = array ("gif", "jpg", "png", "jpe", "jpeg" );
$file_prefix = time() + rand( 1, 100 );

$image_mime = getimagesize($postedxfields[$value[0]]);
$mime = $image_mime['mime'];
$type = substr(strrchr($mime, '/'), 1);

if ( in_array( strtolower( $type ), $allowed_extensions) ) {

copy($postedxfields[$value[0]], $config_path_image_upload.$file_prefix.'.'.$type);

$image_name = $file_prefix . '.'.$type;

if( @file_exists( $config_path_image_upload . $image_name ) ) {

$newpostedxfields[$value[0]] = $config['https_home_url'] . "uploads/posts/" . FOLDER_PREFIX . "/" . $image_name;
}
}

}

//Проверка если выбрали картинку для загрузки
} elseif (isset($_FILES['imgfieldfile_'.$value[0]]) && $_FILES['imgfieldfile_'.$value[0]] !='') {

define( 'FOLDER_PREFIX', date( "Y-m" ) );
if( ! is_dir( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX ) ) {
@mkdir( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX, 0777 );
@chmod( ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX, 0777 );
}


$file_prefix = time() + rand( 1, 100 ) . "_";

$allowed_extensions = array ("gif", "jpg", "png", "jpe", "jpeg" );

$config_path_image_upload = ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX . "/";
$image = $_FILES['imgfieldfile_'.$value[0]]['tmp_name'];
$image_name = $_FILES['imgfieldfile_'.$value[0]]['name'];
$image_name_arr = explode( ".", $image_name );
$type = totranslit( end( $image_name_arr ) );

if ( in_array( strtolower( $type ), $allowed_extensions) ) {

@move_uploaded_file( $image, $config_path_image_upload . $file_prefix . $image_name );

if( @file_exists( $config_path_image_upload . $file_prefix . $image_name ) ) {

$newpostedxfields[$value[0]] = $config['https_home_url'] . "uploads/posts/" . FOLDER_PREFIX . "/" . $file_prefix . $image_name;

}
}

} elseif ( $postedxfields[$value[0]] != "" AND stripos($value[0], 'imgfield_') === false AND !$_POST['imgfieldfile_'.$value[0]] ) {


4. В папке вашего шаблона, в файле addnews.tpl
Для того чтобы изменить дизайн по своему вкусу за пределами тега {xfields}, смотрите структуру вывода поля добавления картинок.


Пример стандартного вывода:
     <tr id="xfield_holder_imgfield_zagruzka">
<td class="addnews">Загрузка файлом:</td>
<td class="xfields" colspan="2">
<input type="text" name="xfield[imgfield_zagruzka]" id="xfield[imgfield_zagruzka]" value="">&nbsp;
<label for="imgfieldfile_imgfield_zagruzka"><img title="Загрузка картинок на сервер" src="engine/skins/images/folder_open.png" border="0" style="cursor:pointer;"></label>
<input type="file" name="imgfieldfile_imgfield_zagruzka" id="imgfieldfile_imgfield_zagruzka" style="display: none;">
&nbsp;&nbsp;(необязательно)</td>
</tr>


5. Установка завершена.

Версия DLE: 10.х
Автор: Yackers dle
Вернуться

Комментарии:


  1. qwerty → 6 мая 2014 04:16
    2. В файлах engine/inc/editnews.php, engine/inc/addnews.php, engine/modules/addnews.php Найти:
    form
    Заменить на:
    form enctype=\"multipart/form-data\"


    мде автор, таких form туевая туча по пробуй еще найди ту что нужно, ты бы еще написал: найти букву f и заменить на form enctype=\"multipart/form-data\"

    Пункт 4 тоже не понял
  2. Digg → 6 мая 2014 20:20
    Есть же еще платный модуль загрузки фалов через доп. поля. Подскажите кто работал, что лучше в плане быстрого обновления движка и нагрузки на сайт: платный модуль или данный хак?
  3. keystudio → 12 мая 2014 20:59
    Что то не работает в 10.1
  4. keystudio → 13 мая 2014 09:05
    Цитата: qwerty
    2. В файлах engine/inc/editnews.php, engine/inc/addnews.php, engine/modules/addnews.php Найти:
    form
    Заменить на:
    form enctype=\"multipart/form-data\"


    мде автор, таких form туевая туча по пробуй еще найди ту что нужно, ты бы еще написал: найти букву f и заменить на form enctype=\"multipart/form-data\"

    Пункт 4 тоже не понял


    Такой же вопрос...
  5. bong → 13 мая 2014 11:03
    Цитата: Digg
    Есть же еще платный модуль загрузки фалов через доп. поля. Подскажите кто работал, что лучше в плане быстрого обновления движка и нагрузки на сайт: платный модуль или данный хак?

    Он не работает на 10.2 и автор не обновляет

    В любом случае не работает
  6. Рд Априори → 28 сентября 2015 12:12
    у меня работает все на 10.2
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.