Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Как реализовать загрузку нескольких файлов в одно доп. поле на DLE 11?

Как реализовать загрузку нескольких файлов в одно доп. поле на DLE 11?


     07.03.2016    Шаблоны (TPL), jQuery, Хаки, Ламерские вопросы    3974

вопрос
Как всем известно, в движке DLE 11 реализована возможность загружать фото и файл через дополнительное поле...
Минусом является то, что можно добавить по одному файлу и картинке на новость.
Как реализовать загрузку нескольких файлов в одно доп. поле на DLE 11?

Вот так выглядит добавление новости после добавления первого файла, в инпут строку записывается
[attachment=(первый файл)]
. При повторном нажатии на "Загрузить файл" и после его загрузки, надпись в инпут строке меняется на
[attachment=(второй файл)]
.
ВОПРОС: Как сделать так, чтобы при добавлении ещё одного или нескольких файла они ДОписывались в строку, а не ПЕРЕЗАписывались?

Ответил: TurEduard


Нашёл сам решение проблемы, достаточно изменить следующие строки в inc/xfields.php

Примерно строка 956:

onComplete: function(id, fileName, response){
if ( response.success ) {
                            var returnbox = response.returnbox;
                            var returnval = response.xfvalue;

                            returnbox = returnbox.replace(/&lt;/g, "<");
                            returnbox = returnbox.replace(/&gt;/g, ">");
                            returnbox = returnbox.replace(/&amp;/g, "&");

                            $('#uploadfile-'+id+' .qq-status').html('{$lang['media_upload_st9']}');
                            $('#xf_{$fieldname}').show();
                            $('#uploadedfile_{$fieldname}').html( returnbox );
                            $('#xf_{$fieldname}').val(returnval);


1)Добавляем переменную var old_returnval = $('#xf_{$fieldname}').val(); которая возвращает значение из инпут строки
2)Дописываем новую переменную "old_returnval" в атрибут $('#xf_{$fieldname}').val(


Получим:

onComplete: function(id, fileName, response){
if ( response.success ) {
                            var returnbox = response.returnbox;
                            var old_returnval = $('#xf_{$fieldname}').val(); //Дописываем эту переменную, которая возвращает значение из инпут строки
                            var returnval = response.xfvalue;

                            returnbox = returnbox.replace(/&lt;/g, "<");
                            returnbox = returnbox.replace(/&gt;/g, ">");
                            returnbox = returnbox.replace(/&amp;/g, "&");

                            $('#uploadfile-'+id+' .qq-status').html('{$lang['media_upload_st9']}');
                            $('#xf_{$fieldname}').show();
                            $('#uploadedfile_{$fieldname}').html( returnbox );
                            $('#xf_{$fieldname}').val(old_returnval + returnval);  // дописываем переменную "old_returnval +" в скобки (можно импровизировать)

12 комментариев

nowheremany
Эксперт

nowheremany - 7 марта 2016 20:41 -

Скорее это логический косяк. Напишите целсофту - пусть поправить

Благодарность принимаю тут Связь

ПафНутиЙ
Админ

ПафНутиЙ - 8 марта 2016 01:50 -

Никак, при загрузке файла вы загружаете каждый раз новый файл. Мультизагрузка не поддерживается.
Создавайте несколько допполей или используйте textarea с редактором.

Каков вопрос - таков и ответ. Просто помните об этом.

sher
Юзер

sher - 8 марта 2016 08:05 -

multiple: false - что скажете насчет данного пункта? http://github.com/valums/file-uploader - вот тут с полной документацией. Разработчики специально по маленьким кусочкам выпускают скрипт. Написали бы уже нормально хоть этот пункт.

TurEduard
Юзер

TurEduard - 8 марта 2016 12:23 -

Нашёл файл fileuploader.php изменил multiple: на true, но ничего не поменялось, что я мог упустить?

sher
Юзер

sher - 8 марта 2016 08:23 -

Ссылка выше не правильная была. http://fineuploader.com/demos.html - вот четко все тут в демо вариантах дается. Разработчики просто зажабили функционал этот поставить.

TurEduard
Юзер

TurEduard - 8 марта 2016 12:27 -

Приступил на работе с Fine Uploader, но разве нет, более простого способа решить данный вопрос. Видимо придётся изучить эту часть скрипта и написать свою реализацию решения

nowheremany
Эксперт

nowheremany - 8 марта 2016 12:21 -

НА сколько я помню тот скрипт, который юзает целсофт давно заброшен. qqFileUploader вроде бы. Но Если вы поменяете скрипт и включите multiple - от этого ничего не изменится.
Придётся юзать как раньше доп скрипты типа моего Загрузка файлов в доп поля или аналоги, если это критичено для вас.

Благодарность принимаю тут Связь

thebeknazar
Юзер

thebeknazar - 25 марта 2016 18:52 -

ты бы обновил свой до 11

TurEduard
Юзер

TurEduard - 8 марта 2016 16:39 -

Нашёл сам решение проблемы, достаточно изменить следующие строки в inc/xfields.php

Примерно строка 956:

onComplete: function(id, fileName, response){
if ( response.success ) {
                            var returnbox = response.returnbox;
                            var returnval = response.xfvalue;

                            returnbox = returnbox.replace(/&lt;/g, "<");
                            returnbox = returnbox.replace(/&gt;/g, ">");
                            returnbox = returnbox.replace(/&amp;/g, "&");

                            $('#uploadfile-'+id+' .qq-status').html('{$lang['media_upload_st9']}');
                            $('#xf_{$fieldname}').show();
                            $('#uploadedfile_{$fieldname}').html( returnbox );
                            $('#xf_{$fieldname}').val(returnval);


1)Добавляем переменную var old_returnval = $('#xf_{$fieldname}').val(); которая возвращает значение из инпут строки
2)Дописываем новую переменную "old_returnval" в атрибут $('#xf_{$fieldname}').val(


Получим:

onComplete: function(id, fileName, response){
if ( response.success ) {
                            var returnbox = response.returnbox;
                            var old_returnval = $('#xf_{$fieldname}').val(); //Дописываем эту переменную, которая возвращает значение из инпут строки
                            var returnval = response.xfvalue;

                            returnbox = returnbox.replace(/&lt;/g, "<");
                            returnbox = returnbox.replace(/&gt;/g, ">");
                            returnbox = returnbox.replace(/&amp;/g, "&");

                            $('#uploadfile-'+id+' .qq-status').html('{$lang['media_upload_st9']}');
                            $('#xf_{$fieldname}').show();
                            $('#uploadedfile_{$fieldname}').html( returnbox );
                            $('#xf_{$fieldname}').val(old_returnval + returnval);  // дописываем переменную "old_returnval +" в скобки (можно импровизировать)

TurEduard
Юзер

TurEduard - 8 марта 2016 16:43 -

Пока без возможности удалять конкретный файл, но всё к тому идёт, скоро обновлю ответ с функциональной мультизагрузкой и файлов и картинок

19mix91
Юзер

19mix91 - 11 марта 2016 19:45 -

Все отлично работает ! спс

Lacost
Юзер

Lacost - 28 апреля 2020 16:09 -

Запилил в виде плагина https://pastebin.com/XbTRcZEV

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

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

наверх