Заполнение на форме новости v210.1.0
Fill ParserKit на addnews/editnews: донор, шаблон, список записей, apply и перезапись полей.
Где появляется панель
После установки плагина на формах добавления и редактирования новости в админке DLE — блок ParserKit (патч engine/inc/addnews.php и editnews.php).
Элементы панели:
| Элемент | Действие |
|---|---|
| Донор | Список активных доноров |
| Шаблон | Шаблоны выбранного донора, подходящие по условиям |
| «Список записей» | Загрузка записей с донора |
| Список записей | Выбор одной строки (ключ = первичный ключ шаблона) |
| «Заполнить поля» | Подстановка значений по карте target/expr |
Кнопка «Все записи» видна только если на карточке донора включено «Разрешить все записи». Она прогоняет шаблон по каждой строке уже загруженного списка и склеивает тексты в поля этой новости. Карточка каждой строки не открывается. Короткий текст и теги склеиваются через запятую, длинный текст — с новой строки, файл в этом режиме пропускается.
Кто может пользоваться
Пользователь с правом добавлять или редактировать новости в DLE. Настройка доноров и шаблонов — только администратор модуля.
Пошаговый сценарий
Откройте форму новости
addnews или editnews.
Выберите донор и шаблон
Если подходит один шаблон — может подставиться сам. Если несколько или ни одного — выберите вручную (см. Шаблоны).
Получите список записей
Нажмите «Список записей». Для донора в режиме «Корень» список содержит одну запись.
Выберите запись и заполните
Отметьте строку в списке → «Заполнить поля». Поля формы получают значения после вычисления Twig-expr из карты шаблона ({{ alias }}, {% if %}, {% for %}, |date).
Перезапись непустых полей
Если целевое поле новости уже заполнено другим значением, оно не затирается само. Под кнопкой «Заполнить поля» открывается итог заполнения: у спорной строки кнопки «Заменить» и «Оставить», сверху те же действия на все спорные строки. Пустые текстовые поля пишутся сразу. Ошибка подсвечивается красным и поле не меняет. Картинка, галерея, файл, видео и звук качаются отдельным запросом fill_store_file уже после списка; спорный файл — только после «Заменить».
Сломанные ссылки
Если в expr остались имена полей, которых нет в схеме донора (ни как alias, ни как path):
- подставляются только рабочие фрагменты;
- пользователь видит предупреждение о сломанных ссылках.
Исправление — в админке шаблона до следующего fill.
Условия шаблона при fill
При выборе шаблона учитываются условия:
- поля формы (заголовок, категория, допполя) — актуальные значения с формы;
- поля записи донора после fetch.
Список шаблонов пересчитывается при смене донора и при смене заголовка, категории или допполей.
Связь and / or — как сохранено в шаблоне.
Откуда берётся фраза {search}
На форме новости фраза берётся из поля, которое выбрано на карточке донора. Если выбор пустой или неизвестный — из заголовка. Пустое выбранное поле не запускает поиск: статус «Заполните поле «…»» с подписью этого поля.
Краткое и полное описание перед подстановкой очищаются от разметки. Описание читается из поля с именем descr (на форме добавления это #autodescr).
Значение параметра «из поля новости» подставляется на сервере из текущих полей формы. Пустое такое поле поиск не останавливает: уходит пустая строка.
AJAX
Запросы идут в devcraft/ajax.php, mod=parserkit:
| Метод | Назначение |
|---|---|
fill_donors | Список доноров |
fill_templates | Шаблоны с учётом контекста формы |
fill_list | Записи донора |
fill_fetch | Одна запись по ключу |
fill_apply | Применить карту: текст сразу, список итога |
fill_store_file | Сохранить один файловый адрес или галерею |
Методы помечены как public в манифесте — доступны с формы новости при наличии прав.
Демо RSS
На тестовом стенде dle210.test типичный сценарий приёмки:
- Донор на
http://dle210.test/rss.xml. - Шаблон с
{{ title }},{{ description }}и т.д. - Fill подставляет заголовок и текст из выбранного
item.
Для проверки вложенности — донор artist-подобного URL и выражения вроде {{ area.name }} (см. Вложенные поля). Если у донора в URL есть {search} — на fill можно передать поисковую фразу (см. Доноры).
Ошибки
| Ситуация | Поведение |
|---|---|
| Лента пуста | Сообщение; поля формы не затираются пустым |
| Нет ключа у записи | Ошибка списка (частичный список не отдаётся) |
| Донор недоступен | Ошибка fetch; ранее введённые поля не трогаются |