🎯 Цель
Создание визуального модуля билдера предметов для системы DLE 14.0, позволяющего превращать дополнительные поля (типа "одна строка") в drag-n-drop интерфейс с сохранением данных.
Система должна быть полностью интегрирована в админку DLE и использовать макет dragitems.html в качестве визуального шаблона.
📁 Раздел 1. Расширение типа дополнительного поля "одна строка"
В админке DLE в разделе редактирования дополнительных полей нужно добавить новый чекбокс:
☑ Включить drag-n-drop билдер предметов
Этот чекбокс добавляется только для полей типа "одна строка".
При его активации:
поле автоматически превращается в drag-n-drop интерфейс;
при деактивации отображается обычное текстовое поле;
значение чекбокса сохраняется в параметре поля (например, editedxfield[28]).
Поведение должно быть совместимо с системой xfields:
чекбокс отображается в форме редактирования доп. поля;
его значение сохраняется и подгружается при редактировании;
в админке, в форме добавления/редактирования новости, на основе этого параметра подключается drag-n-drop интерфейс.
🪟 Раздел 2. Модальное окно с предметами (единый источник)
Создаётся единое модальное окно, которое:
отображает доступные предметы;
работает со всеми полями, где активирован drag-n-drop;
открывается и закрывается вручную кнопкой;
не закрывается автоматически после выбора предметов.
Источник:
Предметы подгружаются из категории DLE с ID = 11.
Каждый предмет должен иметь:
поле itemimage (изображение предмета);
поле rune-color (тип урона: red, orange, green, blue).
Каждый предмет в модалке должен содержать свой ID.
Именно этот ID будет передаваться в поле drag-n-drop при перетаскивании.
❗ Каждый предмет в модальном окне должен содержать свой фактический ID (ID материала), который будет использоваться при перетаскивании предмета в зону “дроп”. После сброса предмета его ID сохраняется в виде строки значений через запятую — например: 3,7,12,6,8. Эти значения являются итоговым содержимым дополнительного поля.
Фильтрация:
модалка должна иметь фильтры по цвету (red, orange, green, blue);
кнопка "Сброс" показывает все предметы.
Исключения:
в коде модуля можно задать массив ID предметов, которые не должны отображаться;
пример:
php$excluded_items = [12, 57, 88];
📦 Раздел 3. Технология загрузки предметов
Все предметы для билдера хранятся как обычные новости в категории DLE с ID = 11.
При открытии формы добавления или редактирования новости:
JavaScript отправляет AJAX-запрос на специальный PHP-файл (например, load_items.php), который:
загружает все новости из категории 11;
читает доп. поля itemimage и rune-color;
исключает заданные ID (например, $excluded_items = [12, 45]);
возвращает JSON или HTML со списком предметов.
После получения данных:
модуль отображает предметы в модалке;
позволяет фильтровать их по цвету;
позволяет перетаскивать в любое активное поле.
🔧 Раздел 4. Поведение и логика drag-n-drop полей
Каждое поле с включённым drag-n-drop:
отображает область, куда можно перетаскивать предметы;
отображает текущие выбранные предметы (иконки) в заданном порядке;
позволяет менять порядок перетаскиванием;
позволяет удалить предмет (иконка с крестиком);
не допускает повторного добавления одного и того же предмета;
сохраняет выбранные ID как строку через запятую (например: 3,7,12,6,8).
Поля должны иметь уникальные ID и быть связаны с input name="xfield[имя]".
Должна быть возможность использовать несколько таких полей на одной странице.
💾 Раздел 5. Поведение при сохранении и редактировании
При сохранении новости:
выбранные предметы сохраняются в скрытом input-поле;
это значение передаётся в DLE и сохраняется как обычное значение дополнительного поля.
При повторном редактировании:
модуль считывает строку ID (например: "5,9,14");
по этим ID воссоздаются предметы в интерфейсе в нужном порядке;
пользователь видит те же предметы, которые были сохранены, и может отредактировать.
Вся логика сохраняется в рамках стандартного механизма DLE xfields.
🎨 Раздел 6. Дизайн и реализация
Использовать дизайн и стили из макета dragitems.html
🎛️ Раздел 7. Поведение drag-n-drop и модалки
Перетаскивание:
пользователь может менять порядок предметов;
placeholder показывает место вставки;
никаких ограничений на перемещение, кроме проверки на дублирование.
Модальное окно:
всегда доступно при добавлении или редактировании новости;
не закрывается автоматически при выборе;
работает для всех drag-н-дроп зон на странице.
📑 Раздел 8. Что предоставить:
Полный рабочий модуль:
патч для xfields.php и всех необходимых файлов
инструкции по установке.
Документация:
по подключению модуля и настройке.
Совместимость:
Полная совместимость с DLE 14.0 и
модулем xField Tab — группирование дополнительных полей по вкладкам.
Разделы:
Опубликован:
08.05.2025 | 18:50 [поднят: 08.05.2025 | 18:50] [последние изменения: 09.05.2025 | 23:06]
Заказ находится в архиве