Плагины для администраторов сайта
Плагин — это удалённый сервис. Он работает на своём сервере, со своими данными. Проверенный встроенный интерфейс работает в изолированном фрейме. Серверные операции используют HTTPS. Плагин работает на одном сайте, в пределах предоставленного вами доступа. Это руководство для того, кто устанавливает плагины и управляет ими. Как написать плагин, см. Написание плагина.
Где находятся плагины
Заголовок раздела «Где находятся плагины»Откройте Настройки → Плагины. Нужно право site:plugins. Оно есть у встроенной роли admin и у суперадминистратора. В разделе три карточки:
- Установленные плагины: каждый плагин этого сайта, его состояние, права доступа и действия.
- Каталог плагинов: плагины из каталогов этого сервера.
- Установить плагин: установка по URL манифеста.
У каждого сайта свои установки. Плагин, установленный на одном сайте, ничего не получает на другом.
Установка плагина
Заголовок раздела «Установка плагина»- Получите у оператора плагина URL манифеста и одноразовый код активации.
- Нажмите Проверить у записи в разделе Каталог плагинов или введите URL манифеста в блоке Установить плагин и нажмите Проверить. URL должен начинаться с
https://. - Прочитайте результат проверки: название, версию, id плагина и сервер, на котором он работает. Блок Добавляет в редактор перечисляет карточки и редакторы полей, которые он добавляет.
- В разделе Возможности отметьте только то, что нужно этому плагину. Выбрать можно только то, что он запрашивает.
- В разделе Модели отметьте типы контента, с которыми он может работать. Без выбранной модели доступа к контенту нет.
- Введите Код активации и нажмите Установить.
Если оператор не настроил ни одного каталога, Каталог плагинов показывает На этом сервере не настроен каталог плагинов. Устанавливайте по URL манифеста ниже. Запись в каталоге ничего не разрешает. При установке манифест загружается и проверяется заново, точно так же, как для введённого URL.
Установка не удаётся, если у развёртывания не задан публичный адрес: плагин не смог бы связаться с Dee Wan. Она не удаётся и тогда, когда плагин отклоняет код активации. В обоих случаях ничего не устанавливается.
Что разрешает каждая возможность
Заголовок раздела «Что разрешает каждая возможность»Плагин работает только с моделями, к которым вы предоставили доступ. Каждая операция записи выполняется от имени пользователя, запустившего её из Dee Wan, с проверкой его текущих прав. Если человек теряет доступ или вы ограничиваете доступ плагина, плагин тоже теряет эту возможность.
| Возможность | Как показана | Что может плагин |
|---|---|---|
content:read |
Читать краткие сведения, сохранённые данные и историю | Читать сводки; с действующим делегированием — сохранённые значения и доступные версии в пределах текущих прав человека. |
workflow:read |
Читать состояние процесса | Читать состояние процесса и доступные переходы. |
workflow:publish |
Публиковать | Публиковать закреплённую версию. |
workflow:unpublish |
Снимать с публикации | Снимать опубликованную версию с публикации. |
workflow:locale |
Публиковать или снимать с публикации один язык | Менять состояние публикации одного языка вместо всей группы переводов. Переход уведомляет людей так же, как тот же переход в редакторе, см. отзывы и уведомления. |
content:write |
Сохранять существующие записи | Сохранять значения, связи и медиа с обычными проверками прав делегировавшего человека. |
content:create |
Создавать записи | Создавать записи с обычными проверками права на создание. |
content:delete |
Перемещать в Корзину | Перемещать записи в Корзину с обычными проверками права на удаление. |
draft:write |
Читать и менять несохранённые черновики этого человека | Читать, записывать и отбрасывать рабочие черновики этого человека. |
media:write |
Загружать файлы | Загружать файлы в пределах текущего права человека на загрузку. |
media:read |
Читать существующие медиа | Читать метаданные и содержимое в пределах текущих прав человека. |
media:update |
Менять метаданные медиа | Менять метаданные в пределах текущего права человека на изменение медиа. |
content:propose |
Предлагать изменения на проверку редактору | Создавать предложения. Редактор применяет или отклоняет их в записи. |
media:source |
Предлагать свои файлы в выборе медиа | Показывать свои файлы в окне выбора медиа. |
Создание, удаление, чтение существующих медиа и изменение метаданных требуют отдельных одобренных возможностей. Прежние content:write и media:write не дают этих прав. Новые и изменённые связи, в том числе внутри компонентов, должны соответствовать и списку моделей установки, и списку моделей делегирования. Неизменённая непрозрачная ссылка может сохраняться при другом редактировании.
Плагин не может читать пользователей, роли, сессии, настройки и журнал аудита. Встроенный код работает в изолированном фрейме, без исполнения в родительском документе админки или прямого доступа к базе данных. Подробности: Безопасность плагинов.
Проверки контента
Заголовок раздела «Проверки контента»Плагин может объявить проверки контента. Они видны в блоке Проверки содержимого в его строке вместе с моментом запуска: При сохранении, При публикации, При восстановлении, При удалении, При снятии с публикации или При переходе по этапам. Проверка выполняется при каждой операции записи, соответствующей условиям проверки, в модель, доступную плагину, на любом пути: редактор, массовые действия, таблицы, импорт, API управления и другие плагины.
Учитывайте, что может проверка:
- Она видит факты записи, о которой её спрашивают, включая новые значения, даже без
content:read. - Она может предупредить или отклонить запись.
- Проверка При сохранении или При восстановлении также может изменить сохраняемый контент: значения, связи, медиа и настройки поиска. Dee Wan сохраняет результат по тем же правилам, что и правку человека. Затем редактор показывает, какие поля изменились, а история версий называет плагин.
У каждой проверки есть переключатель Блокировать изменения без ответа. Выключен (по умолчанию): при таймауте или сбое изменение проходит с предупреждением. Включён: изменение отклоняется. Настоящий отказ всегда останавливает изменение. Проверка показывает Нужно больше доступа, если плагину не предоставлена нужная ей возможность, и Плагин выключен, пока плагин отключён.
Устанавливайте только те плагины, которым доверяете контент выдаваемых моделей.
Проверки перед приёмом
Заголовок раздела «Проверки перед приёмом»Плагин может объявить проверки, которые выполняются ДО того, как Dee Wan что-то примет. Они показаны в строке плагина в блоке Проверки перед приёмом, у каждой есть переключатель Использовать эту проверку, и каждая выключена, пока вы её не включите. Само объявление ничего не отправляет.
- Перед загрузкой файла спрашивает плагин о каждом новом файле библиотеки. Плагин видит имя файла, тип, размер, папку и альтернативные тексты. Самого файла и того, кто его загружает, он не видит. Он может одобрить файл, поправить его имя (тип файла остаётся прежним) и альтернативные тексты или отклонить файл со своей причиной, которую прочитает загружающий.
- Перед сохранением комментария спрашивает плагин о каждом комментарии посетителя. Плагин видит запись, имя и сайт автора и текст. Адреса электронной почты он не видит. Он может одобрить комментарий, оставить его модератору или отклонить.
Проверка, которая не ответила, никогда не одобряет. Если она не уложилась в 5 секунд, недоступна или ответила тем, что Dee Wan не принимает, загрузка отклоняется с сообщением «Проверка загрузки не ответила, поэтому файл не загружен. Попробуйте ещё раз чуть позже.», ничего не сохраняется, а комментарий ждёт модератора, как и когда проверок нет. В течение 24 часов при повторной отправке того же файла с теми же данными используется первый ответ проверки, поэтому проверка повторно не вызывается. После неудачной попытки проверка вызывается снова.
Включать и выключать проверку может тот, кто имеет то же право, что и для изменения доступа (site:plugins); это записывается в историю как Изменена настройка проверки плагина. Проверка показывает Нужно больше доступа, если плагину не предоставлена нужная ей возможность, и Плагин выключен, пока плагин отключён. Медиа, которое приносит импорт, не проходит через проверки загрузки, поэтому проверка никогда не видит импортированные файлы. Любой другой способ добавить новый файл проходит: загрузка в библиотеку, management API, плагин, изображения, созданные ИИ, файлы, скопированные из внешнего источника, и планировщик контента.
Медиа из плагина
Заголовок раздела «Медиа из плагина»Плагин с media:source добавляет файлы в окно выбора медиа. В окне выбора Откуда выбрать предлагает Библиотека и Источники. Человеку нужно право media:upload.
- Добавить копирует файл в библиотеку сайта. Он становится обычным файлом сайта и продолжает работать, даже если плагин исчезнет.
- Привязать без копии оставляет файл на сервере плагина. Страницы используют его адрес как есть. Dee Wan не может изменить или заменить файл. Если плагин отключён или удалён, существующие страницы сохраняют адрес, а сведения о медиа сообщают Источник сейчас недоступен.
Отключение плагина или отзыв возможности media:source сразу скрывает его источники.
Столбцы и действия в списке контента
Заголовок раздела «Столбцы и действия в списке контента»Плагин может добавить столбец в список контента модели, к которой ему предоставлен доступ, и действия для выбранных вами записей. Отображает их Dee Wan. Плагин присылает только текст и, для ссылки, адрес https://.
- Столбцы. Ячейка — простой текст, цветная метка или ссылка. Плагин спрашивают только о строках текущей страницы, не более 50 за раз, и ему отправляют модель и идентификаторы строк, которые вы можете читать, но не их значения. У строки, которой нечего показать, стоит прочерк. Если плагин не отвечает, его столбец показывает прочерк и сообщение {plugin} не смог заполнить этот столбец. Остальной список работает как обычно. Открытие списка ничего не записывает в журнал аудита.
- Действия. Выберите записи и откройте Действия плагинов. В меню — то, что плагины предлагают для этой модели, каждое с пометкой От {plugin}. Выберите действие, заполните его форму, если она есть, и нажмите Выполнить. Оно выполняется по одному разу для каждой выбранной записи, не более 25. Затем Dee Wan показывает, сколько выполнено и сколько нет, и результат по каждой записи. Отказ по одной записи не останавливает остальные. Каждая запись проверяется по вашим правам в этот момент, а действие, которое может изменить данные, сначала просит подтверждения.
- Столбец или действие появляются, только пока плагин активен и ему предоставлены доступ к модели и все необходимые возможности. Отключение плагина убирает оба сразу.
Структурированные поля
Заголовок раздела «Структурированные поля»Плагин может предложить редактор, который показывает одно JSON-поле как небольшую форму из именованных значений: текст, число, переключатель и выбор. В конструкторе моделей откройте вкладку Интерфейс поля и выберите редактор в поле Редактор плагина. Выбор сохраняет в поле правила: какие значения обязательны, их пределы и допустимые варианты. Dee Wan проверяет по ним каждое сохранение, как и любое другое правило поля. Если плагин отключён или удалён, поле сохраняет эти правила и свои значения, а показывает их стандартный JSON-редактор.
Рабочие области плагинов
Заголовок раздела «Рабочие области плагинов»После проверки плагин может добавить страницы навигации и представления на панели управления. Изолированные фреймы используют объявленные операции, как карточки плагина. Представление доступно только при активной инсталляции, выданных правах плагина и соответствующих текущих правах человека на модели и системные действия. Прямой URL не даёт доступа. Новые права при обновлении остаются невыданными.
Одобренные шаблоны писем
Заголовок раздела «Одобренные шаблоны писем»Администратор с site:plugins настраивает Шаблоны писем в строке плагина. В поле Получатель выберите Согласованные адреса, Автор записи или Назначенный рецензент. Для адресов нужен список из 1–8 получателей. Остальные варианты используют аккаунт, создавший выбранную запись в CMS (created_by_id), или пользователя, назначенного в её текущем процессе согласования. Автор записи — не публичный автор блога, не связанный профиль и не последний редактор. Аккаунт должен быть активным, иметь текущий доступ к сайту и по-прежнему видеть запись; активному суперадминистратору для этого не нужна отдельная роль на сайте. Если подходящего получателя нет, отправка отклоняется.
Перед сохранением проверьте правило выбора получателя, тему и текст. Плагин с mail:send выбирает объявленный шаблон и передаёт только объявленные подстановки. Для письма автору или рецензенту он также указывает запись в пределах выданного доступа к моделям и записям. Адрес, аккаунт, правило выбора получателя или произвольный текст плагин задать не может. У человека должно сохраняться право site:plugins. Для заданных адресов нужно делегирование manage; для автора или рецензента подходит и делегирование действия над соответствующей записью.
Повтор с тем же ключом использует уже сохранённые письмо и получателя, даже после смены рецензента. Система снова проверяет доступ инициатора, активность исходного получателя, его доступ к сайту и записи, а также совпадение адреса. Если получатель больше не подходит, отправка отклоняется, а не перенаправляется другому человеку. Приём провайдером не гарантирует доставку во входящие; обрыв соединения не означает, что письмо не было отправлено.
Выданные права также могут разрешать чтение и модерацию комментариев, чтение и изменение перенаправлений, восстановление из корзины и удаление неиспользуемых медиа. Сохраняются проверки прав, значений и конкурентных изменений соответствующих сервисов CMS. Шаблоны перенаправлений требуют обычного подтверждённого digest. Используемые медиа удалять нельзя.
Изменение доступа
Заголовок раздела «Изменение доступа»Нажмите Права в строке плагина. Отметьте возможности и модели, затем нажмите Сохранить права. Выбрать можно только то, что запрашивает манифест плагина, и хотя бы одну возможность. Ограничение доступа действует сразу, в том числе для работы, которую плагин поставил в очередь раньше.
Отключение и включение
Заголовок раздела «Отключение и включение»Отключить сразу останавливает плагин: Dee Wan отклоняет его запросы, а его карточки, операции, источники медиа и проверки контента перестают работать. Пока плагин отключён, его проверки не выполняются при записи. Включить включает его снова с прежним токеном и правами доступа.
Запланированная плагином работа может не выполниться, пока он отключён. Например, расписание Scheduling, срок которого наступает при отключённом плагине, отклоняется и не повторяется.
Смена токена
Заголовок раздела «Смена токена»Используйте это, если учётные данные плагина могли утечь или если об этом просит его оператор.
- Получите у оператора плагина новый код активации.
- Нажмите Заменить в строке плагина, введите Новый код активации и нажмите Заменить токен.
Смена работает только для активного плагина. Если плагин отказывает или недоступен, ничего не меняется и старый токен продолжает работать. После успешной смены старый токен работает не дольше 10 минут и перестаёт работать, как только плагин использует новый.
Принятие новой версии
Заголовок раздела «Принятие новой версии»Новая версия, которую опубликовал плагин, ничего не меняет на вашем сайте, пока вы её не примете. В разделе Настройки → Плагины нажмите Проверить обновления. Проверьте текущую и предлагаемую версии, изменения функций, разрешений и origin встроенного интерфейса. Нажмите Подтвердить обновление. Сервер повторно проверит выбранную версию через POST /api/plugins/:id/upgrade; см. Выпуск новой версии.
- Принятие версии никогда не расширяет доступ плагина. Оно может сузить его, если версия больше не запрашивает какую-то возможность.
- Если версия запрашивает новую возможность, добавьте её потом через Права.
- Версию, которая меняет id плагина, его сервер или версию протокола, принять нельзя. Удалите плагин и установите его снова.
Удаление
Заголовок раздела «Удаление»Удалить сначала спрашивает: Доступ отзывается сразу. Данные, которые хранит плагин, удаляет только сам плагин. Токен перестаёт работать навсегда, а плагин исчезает из списка.
Что остаётся в Dee Wan:
- сохранённые им версии, сделанные им публикации и их записи в истории
- загруженные им файлы и файлы, которые люди скопировали из него
- открытые предложения в записях, которые редакторы по-прежнему могут применить или отклонить
- блоки форматированного текста из плагина. Они остаются сохранёнными, но публичные страницы не показывают их, пока их не определяет ни один активный плагин. См. Блоки плагинов.
- поля, которые использовали его редактор полей. Они возвращаются к стандартному редактору и сохраняют значения.
Что остаётся на стороне плагина: всё, что он хранит. Попросите его оператора удалить эти данные. Для Scheduling см. Данные, хранение, удаление.
Повторная установка того же плагина создаёт новую установку. Заново настройте доступ и получите новый код активации. Переключатели проверок контента возвращаются к значениям по умолчанию.
Релизы Scheduling
Заголовок раздела «Релизы Scheduling»Интерфейс Scheduling остаётся английским. Релиз отправляет до 25 элементов одной атомарной командой CMS. Done подтверждает весь набор. Failed означает определённый отказ без изменения публикации. Outcome unknown требует получить результат той же сохранённой команды с тем же ключом и не означает частичную публикацию.
Релиз, заблокированный в назначенное время, остаётся запланированным и показывает причины. Исправьте или уберите элементы, затем нажмите Run now либо задайте новое время. Retry unfinished items перепроверяет определённый отказ или восстанавливает неизвестный результат без догадок об успехе элементов. Stop remaining items останавливает ещё не отправленную работу. Уже внесённые изменения сохраняются; отправленную команду отменить нельзя. Расписания, наступившие после отключения или удаления плагина, отклоняются.
При добавлении записи в выпуск выберите Version → Independent future version, чтобы подготовить отдельный контент кампании. Редактируйте его через Будущие версии в записи. Обычные элементы выпуска используют последнее сохранение обычного черновика; будущие — собственную точную версию на момент начала команды. Для выпусков, которые меняют одну запись на пересекающихся языках, задайте разное время. Подробнее: будущие версии.
Полные правила: Релизы и Scheduling: от начала до конца.
Следующий шаг
Заголовок раздела «Следующий шаг»Разработчикам: Написание плагина, Протокол v1 и Безопасность плагинов.
Проверка и принятие обновления
Заголовок раздела «Проверка и принятие обновления»Откройте Настройки → Плагины → Проверить обновления. Dee Wan загружает манифест по сохранённому URL установленного плагина, не обращаясь к реестру. Проверьте версии, функции, добавленные/удалённые разрешения и источники встроенного интерфейса. Подтвердите обновление. Сервер повторно проверяет версию; изменение после просмотра блокирует принятие. Новые разрешения остаются выключенными. При необходимости измените доступ отдельно. Ошибка сохраняет установленную версию. Исправьте причину, повторите проверку. Интеграции читают сохранённые данные/историю, создают записи, сохраняют связи/медиа, переносят записи в корзину, читают файлы и изменяют описания. Текущие права человека обязательны. Встроенный интерфейс работает изолированно. Изменения полей сохраняются обычной кнопкой Сохранить. Скрипты виджетов выполняются в изолированных фреймах предпросмотра и сайта. Бронирование и формы обслуживает провайдер; не храните его секреты в контенте.
Стабильная версия ещё не выпущена (pre-MVP)
Коммит исходного кода: fe23db481c422b40e317b92fc98116b4c0c26a87 (с локальными изменениями)
Дата сборки (UTC): 2026-10-18T09:22:34.630Z
Коммит для обновления: не определён: в рабочей копии есть изменения. Примечания к выпуску