DevCraft Документации
Руководства

Заполнение на форме новости v210.1.0

Fill ParserKit на addnews/editnews: донор, шаблон, список записей, apply и перезапись полей.

Где появляется панель

После установки плагина на формах добавления и редактирования новости в админке DLE — блок ParserKit (патч engine/inc/addnews.php и editnews.php).

Элементы панели:

ЭлементДействие
ДонорСписок активных доноров
ШаблонШаблоны выбранного донора, подходящие по условиям
«Список записей»Загрузка записей с донора
Список записейВыбор одной строки (ключ = первичный ключ шаблона)
«Заполнить поля»Подстановка значений по карте target/expr

Кнопка «Все записи» видна только если на карточке донора включено «Разрешить все записи». Она прогоняет шаблон по каждой строке уже загруженного списка и склеивает тексты в поля этой новости. Карточка каждой строки не открывается. Короткий текст и теги склеиваются через запятую, длинный текст — с новой строки, файл в этом режиме пропускается.

Кто может пользоваться

Пользователь с правом добавлять или редактировать новости в DLE. Настройка доноров и шаблонов — только администратор модуля.

Пошаговый сценарий

Выберите донор и шаблон

Если подходит один шаблон — может подставиться сам. Если несколько или ни одного — выберите вручную (см. Шаблоны).

Получите список записей

Нажмите «Список записей». Для донора в режиме «Корень» список содержит одну запись.

Выберите запись и заполните

Отметьте строку в списке → «Заполнить поля». Поля формы получают значения после вычисления Twig-expr из карты шаблона ({{ alias }}, {% if %}, {% for %}, |date).

Перезапись непустых полей

Если целевое поле новости уже заполнено другим значением, оно не затирается само. Под кнопкой «Заполнить поля» открывается итог заполнения: у спорной строки кнопки «Заменить» и «Оставить», сверху те же действия на все спорные строки. Пустые текстовые поля пишутся сразу. Ошибка подсвечивается красным и поле не меняет. Картинка, галерея, файл, видео и звук качаются отдельным запросом fill_store_file уже после списка; спорный файл — только после «Заменить».

Сломанные ссылки

Если в expr остались имена полей, которых нет в схеме донора (ни как alias, ни как path):

  • подставляются только рабочие фрагменты;
  • пользователь видит предупреждение о сломанных ссылках.

Исправление — в админке шаблона до следующего fill.

Условия шаблона при fill

При выборе шаблона учитываются условия:

  • поля формы (заголовок, категория, допполя) — актуальные значения с формы;
  • поля записи донора после fetch.

Список шаблонов пересчитывается при смене донора и при смене заголовка, категории или допполей.

Связь and / or — как сохранено в шаблоне.

На форме новости фраза берётся из поля, которое выбрано на карточке донора. Если выбор пустой или неизвестный — из заголовка. Пустое выбранное поле не запускает поиск: статус «Заполните поле «…»» с подписью этого поля.

Краткое и полное описание перед подстановкой очищаются от разметки. Описание читается из поля с именем 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 типичный сценарий приёмки:

  1. Донор на http://dle210.test/rss.xml.
  2. Шаблон с {{ title }}, {{ description }} и т.д.
  3. Fill подставляет заголовок и текст из выбранного item.

Для проверки вложенности — донор artist-подобного URL и выражения вроде {{ area.name }} (см. Вложенные поля). Если у донора в URL есть {search} — на fill можно передать поисковую фразу (см. Доноры).

Ошибки

СитуацияПоведение
Лента пустаСообщение; поля формы не затираются пустым
Нет ключа у записиОшибка списка (частичный список не отдаётся)
Донор недоступенОшибка fetch; ранее введённые поля не трогаются

См. также

На этой странице