Перейти к содержимому
Версия 1.0 ещё не выпущена; проект находится на стадии pre-MVP. См. возможности и ограничения версии 1.0.

Редактирование и публикация контента

Это руководство о записях в разделе Контент: как их создавать, сохранять, публиковать, переводить, проверять, восстанавливать и удалять. У страниц свой редактор, см. редактор страниц. Записи блога находятся в разделе Записи, см. сайты-блоги. Типы полей и их правила описаны в разделе модели и поля. Что разрешено роли, описано в разделе люди и доступ.

Откройте Контент в боковом меню и выберите модель. Список показывает заголовок, slug, статус и язык каждой записи.

  • Поиск по контенту… ищет в сохранённых названиях, именах, адресах и полях форматированного текста, включая неопубликованные черновики. В результатах показаны совпавшее поле и короткий фрагмент. Разметка, атрибуты HTML и ключи JSON не участвуют в поиске. Фильтры модели, языка и этапа, а также права на записи и поля применяются до подсчёта результатов.
  • Этап фильтрует по этапу согласования. Публикация фильтрует по Опубликовано или Не опубликовано.
  • Поля фильтрует и сортирует список одной модели по значениям её полей. Описан ниже, в разделе Фильтр и сортировка по полям.
  • Откройте запись через Редактировать в меню строки. Дублировать копирует её как новый черновик.
  • Модель с одной записью сразу открывает эту запись. См. модели с одной записью.

Первый поиск автоматически подготавливает старые сохранённые значения небольшими порциями. Дождитесь загрузки или измените либо очистите запрос, чтобы отменить ожидание. При ошибке можно повторить запрос; ошибка не выдаётся за отсутствие результатов. Длина запроса — до 200 символов. Поиск работает с текущим сохранённым контентом; поиск на публичном сайте по-прежнему работает отдельно и только с опубликованным контентом.

Если запись доступна только для чтения, экран сообщает: Эту запись можно читать, но не менять. Она принадлежит другому человеку, или ваша роль даёт только чтение.

Административный список GET /api/content_instances?q=... ищет в текущем сохранённом тексте с обычными фильтрами, правами и пагинацией. Совпавшая запись содержит search_match: { field, label, excerpt }. Подсчёт и массовый выбор используют те же совпадения. Запрос ограничен 200 символами, в том числе после нормализации регистра; % и _ считаются обычным текстом.

Общие поля находятся по сохранённому значению основного языка и в других языковых версиях. Основная запись тоже должна быть доступна: скрытые поля и недоступные основные записи не влияют на результаты.

409 editorial_search_preparing означает, что подготовка ещё не завершена и полного количества результатов нет. Вызывайте POST /api/content_instances/search/prepare с теми же фильтрами в параметрах до data.more: false, затем повторите чтение. Один вызов обрабатывает до 16 значений и обычно до 1 МиБ; более крупное значение читается отдельно. Интерфейс делает это автоматически. Контент и состояние публикации не меняются. Производные фрагменты внутренние: они не экспортируются и не доступны через общие include. /first отклоняет q. Отдельный контракт управления listEntries не принимает q.

Когда открыта одна модель, Поля открывает окно. Добавьте до четырёх условий. Для каждой группы выберите Все условия (И) — все условия, или Любое условие (ИЛИ) — любое условие. Добавить группу добавляет вложенную группу: максимум три уровня, включая внешнюю. Например: золотой тариф И (больше 100 просмотров ИЛИ пустая дата). Сравниваются последние сохранённые значения, включая черновики. Сохранённые представления, массовый выбор, количество и страницы сохраняют те же группы. Старые плоские фильтры по-прежнему означают И.

Тип поля Условия
Текст равно, содержит (без учёта регистра), пусто, не пусто
Выбор одно из — отмеченные варианты, пусто, не пусто
Да или нет равно — да или нет, пусто, не пусто
Число равно, больше, не меньше, меньше, не больше, пусто, не пусто
Дата равно, позже, в этот день или позже, раньше, в этот день или раньше, пусто, не пусто
Связь с другими записями включает одну из — выбранные записи, пусто, не пусто; Значение связи — фильтр по настроенному доступному полю отображения
Точка в радиусе, в области, пусто, не пусто
  • Числа сравниваются как числа, поэтому 9 меньше 10. Обычные даты сравниваются по дню, а даты с часовым поясом — по сохранённому моменту времени в UTC.
  • Сортировать по упорядочивает одно текстовое поле, поле выбора, да/нет, число или дату по возрастанию или убыванию. Связь с одной записью одной целевой модели можно сортировать по настроенному доступному скалярному полю отображения; связь с несколькими записями — нельзя. Поле точки сортируется по расстоянию от введённых широты и долготы. Пустые и недоступные значения идут последними в обоих направлениях; равные значения сохраняют стабильный порядок между страницами.
  • Значение связи использует условия текстового поля, выбора, да/нет, числа или даты, заданного для отображения. Учитываются только доступные связанные записи и поля. Для общих ссылок из другого сайта доступны условия по выбранным записям, но не фильтрация и сортировка по отображаемому значению.
  • Для радиуса точки укажите широту, долготу и расстояние в метрах. Для области — южную, западную, северную и восточную границы; если западная долгота больше восточной, область пересекает 180-й меридиан. Границы включаются.
  • Форматированный текст, медиа, компоненты и поля JSON нельзя фильтровать и сортировать. Окно перечисляет их в разделе Недоступно здесь с причиной.
  • Поле, которое ваша роль не может читать, не предлагается. Оно не используется и тогда, когда его называет сохранённое представление.
  • Поле, общее для языков, читается у записи основного языка; поле отдельного языка читается у записи на этом языке.
  • Условия и сортировка входят в адрес, поэтому переживают перезагрузку и ими можно поделиться ссылкой. Выбрать все подходящие: N, счётчики и страницы используют те же условия. Списку нужна одна модель: когда показаны все модели, Поля не предлагается.

Представление — это именованная настройка списка контента одной модели: фильтры по этапу работы и состоянию публикации, условия по полям, поисковый запрос, какие столбцы показаны и в каком порядке, а также одна сортировка (по столбцу или по полю). Откройте его через Представления рядом с остальными кнопками списка.

  • Личные и общие. Сохранить как новое представление… сохраняет представление для вас. Общее представление видят все, кто может читать модель. Создание, изменение и удаление общего представления, а также выбор представления сайта по умолчанию требуют права применять изменения моделей (model:apply). Чтобы создавать личные представления и пользоваться общими, достаточно права читать модель.
  • Сохранение. Открытое представление применяет свои фильтры, столбцы и сортировку. Если изменить список, представление помечается Изменено, а Сохранить заменяет его. Если кто-то изменил представление после того, как вы его открыли, можно выбрать Взять их версию или Оставить мои изменения и сохранить. Сохранить как представление сохраняет текущий список как новое представление, не трогая открытое.
  • Столбцы и сортировка… задаёт, какие столбцы показаны, их порядок и сортировку по Создано или Обновлено. Можно показать встроенные столбцы, а также текстовые, числовые и логические поля (да/нет), поля выбора, даты и связей модели. Столбец связи показывает доступные вам названия и количество записей. Нажмите на ячейку, чтобы просмотреть до 20 связанных записей и открыть их редакторы. Названия и количество учитывают ваши текущие права.
  • По умолчанию. В меню ⋯ пункты Сделать моим по умолчанию и Сделать по умолчанию для сайта выбирают представление, с которым открывается модель. Ваше представление по умолчанию важнее представления сайта. Оно применяется, когда вы открываете модель по адресу без фильтров и без названного представления, поэтому ссылка с фильтрами, например плитка на панели, не подменяется. Общее представление может быть вашим представлением по умолчанию; представлением сайта по умолчанию может быть только общее.
  • Кто что видит. Представление хранит фильтры, столбцы и сортировку, но никогда не контент. При каждом чтении ваш доступ проверяется заново: столбцы, условия по полям и сортировка по полю, которые используют поле, недоступное вашей роли для чтения, пропускаются, а представление сообщает, сколько частей пропущено, не называя полей; строки — те, которые ваша роль вправе читать, как в любом списке. Если сохранить представление поверх списка, который вы видите, сохранятся столбцы, которые вы видите.
  • Поля, которых больше нет. Столбец, условие или сортировка по удалённому полю либо по полю, тип которого больше не поддерживает такое действие, не попадает в список. Представление по-прежнему открывается и не переписывается. Уведомление называет удалённые поля, а Убрать их и сохранить исправляет представление одним действием у тех, кому разрешено его менять. Остальным предлагается обратиться к тому, кто управляет моделями. Столбцы, скрытые вашей ролью, не удаляются.
  • Ограничения. Название — до 80 символов, уникальное среди ваших представлений модели и среди общих. У каждого человека до 25 личных представлений на модель, у модели — до 25 общих. В представлении до 40 столбцов и поисковый запрос до 200 символов. Удаление представления убирает и настройки по умолчанию, которые на него указывают.

Представления — это настройка администрирования. Они ничего не меняют в опубликованном, в публичном API и не требуют генерации или развёртывания.

  1. Выберите модель и нажмите Создать контент.
  2. Заполните поля. Новая запись начинается на языке сайта по умолчанию. Если ваша роль не может создавать записи на этом языке, запись начинается на первом языке, на котором роль может создавать записи. Список языков предлагает только языки, на которых ваша роль может создавать записи.
  3. Нажмите Создать черновик. Экран сообщит Запись создана как черновик.

Создание отклоняется для языка, которого на сайте нет (unknown_locale). Если язык удалят во время создания записи, ничего не записывается (language_changed).

У каждого языка свой адрес. Оставьте поле Адрес пустым, чтобы адрес был создан из заголовка. Правила описаны в разделе адрес записи.

Виджеты поставщиков в форматированном тексте

Заголовок раздела «Виджеты поставщиков в форматированном тексте»

В поле форматированного текста выберите Код виджета (на телефоне — в Ещё), чтобы вставить HTML, CSS и JavaScript поставщика. Задайте доступное название и вставьте каждую часть в подписанный редактор кода. Доступны подсветка синтаксиса, номера строк, парные скобки, поиск, отмена и повтор.

Выберите Форматировать документ в контекстном меню редактора или видимом меню действий либо нажмите Shift+Alt+F. Prettier форматирует код локально в браузере. Форматирование не сохраняет и не запускает код. Отмена возвращает прежний текст; код с ошибкой остаётся без изменений с объяснением. Tab переводит фокус на следующий элемент управления.

Предпросмотр виджета запускает виджет в изолированном фрейме. Сохраните запись, чтобы оставить изменения; публикация на сайте выполняется отдельно. Данные бронирования или формы обрабатывает поставщик.

Сохранение и публикация — отдельные шаги. Сохранение никогда ничего не делает публичным.

Нажмите Сохранить. Каждое сохранение создаёт новую версию записи.

  • Значок Не сохранено показывает несохранённые правки.
  • То, что вы печатаете во время сохранения, в это сохранение не входит. Эти правки остаются Не сохранено, пока вы не сохраните ещё раз.
  • При уходе со страницы с несохранёнными правками редактор спросит: Продолжить редактирование или Отбросить и уйти.
  • Предпросмотр здесь может показывать несохранённые правки в дизайне сайта, не сохраняя их, если рендерер сайта это поддерживает. См. Предпросмотр несохранённых изменений.
  • Правило поля или проверка плагина может отклонить сохранение. Редактор назовёт поле и сохранит вашу правку в форме. См. проверки контента плагинами.

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

Перед нажатием Применить сохраните или отмените свои правки. Изменения сохраняются обычным способом с проверкой версии и ваших текущих прав. Отклонить оставляет запись без изменений; интеграция сможет предложить снова. Если после создания предложения запись изменилась, предложение устарело. Отклоните его или запросите новое.

По умолчанию черновик можно сохранить с незаполненными обязательными полями. У нового черновика может пока не быть адреса. Неверные значения, недоступные связи, повторяющиеся уникальные значения и нарушения структуры компонентов по-прежнему мешают сохранению. Очистить уже существующий адрес нельзя. Настройка модели Проверка черновиков позволяет требовать заполнения полей при каждом сохранении.

Перед публикацией проверяется именно сохранённая версия на каждом затронутом языке: обязательные поля, правила адресов, связи, проверки плагинов и обязательные задачи проверки. Это относится и к публикации в обход проверки, импорту, плагинам и запланированным выпускам. Готовый английский текст не делает незавершённый тайский перевод готовым к публикации.

Панель Публикация показывает переходы, доступные вашей роли. Переход, который будет отклонён, вы не увидите.

  • При выключенном согласовании кнопка Опубликовать сразу делает сохранённую версию публичной.
  • Переход или публикация сначала сохраняет несохранённые правки. Если это сохранение отклонено, ничего не меняется.
  • Снять с публикации убирает запись из публичного доступа. Она остаётся черновиком. Ничего не удаляется.

Согласование включается в настройках сайта: Настройки → Процесс → Включить проверку.

При включённом согласовании запись проходит этапы, настроенные для сайта, например Отправить на проверку, Одобрить, Вернуть и Опубликовать. К каждому переходу можно добавить заметку для следующего человека.

В разделе Обзор есть списки Ждут проверки и Возвращено. В каждой строке указано доступное вам действие или пользователь, чьего действия ожидает запись. Откройте запись из списка и выполните переход в редакторе.

Роль с правом обхода (content:publish_override) видит блок В обход. Ни одна встроенная роль этого права не имеет. Суперадминистратору оно доступно всегда.

  1. Нажмите Опубликовать все языки сейчас (или Опубликовать сейчас, если у записи один язык).
  2. Укажите причину в поле Почему это необходимо?. Это обязательно.
  3. Подтвердите.

Обход действует на всю группу переводов. В журнале действий он отображается как Публикация в обход. Ограничения роли по языкам для публикации и снятия с публикации при этом всё равно проверяются. Обход отклоняется (locale_denied, с названиями языков) только если он изменил бы язык вне этих ограничений. Язык, который уже показывает публикуемую версию или уже снят при снятии с публикации, не учитывается. Снять все языки с публикации сейчас работает так же, но не сохраняет несохранённые правки заранее.

Перед снятием с публикации диалог проверяет, что ссылается на запись.

  • Он показывает, сколько записей ссылаются сюда и сколько из них опубликовано. Их опубликованные копии сохраняют ссылку, поэтому такие ссылки перестанут работать.
  • Записи в корзине, которые ссылаются сюда, помечены В корзине. Ссылки только из черновика помечены только черновик.
  • Если список изменится до подтверждения, переход будет отклонён с сообщением Список ссылающихся материалов изменился. Проверьте его ещё раз.

Запись и все её языки образуют одну группу переводов. Каждый язык сохраняется отдельно.

В панели Язык нажмите Начать перевод: {language}. Новый язык начинается пустым. Заполните его и сохраните.

  • Общие (непереводимые) поля редактируются на основном языке. Панель показывает, сколько таких полей.
  • Пока язык не опубликован, панель говорит, что вместо него получат посетители, например На «тайский» ещё не опубликовано. Посетители видят «английский». См. языки.

У панели Публикация две области действия:

Область Кнопки Результат
Этот язык Опубликовать: {language}, Снять с публикации: {language}, переход с пометкой · {language} Меняется только этот язык. Остальные языки не меняются.
Все языки Опубликовать все языки, Снять с публикации все языки, переход с пометкой · Все языки Действие затрагивает все языковые версии записи. Переход между двумя неопубликованными этапами, например Одобрить · Все языки или Вернуть · Все языки, сохраняет статус Опубликовано у уже опубликованных языковых версий. Чтобы снять отдельную версию с публикации, используйте Снять с публикации: {language}.

Другие действия для одного языка:

  • Переместить этот язык в корзину убирает один язык в корзину. Язык, который хранит историю записи, нельзя убрать отдельно; переместите в корзину всю запись.
  • Восстановить только {language} в истории восстанавливает один язык из старой версии.

Роль с доступом только к части языков может выполнять действия лишь с этими языковыми версиями. Если действие затрагивает язык, к которому у роли нет нужного доступа, оно отклоняется целиком. См. ограничение роли полями или языками.

Нажмите Назначить (или Переназначить) в панели Публикация.

  • Выберите одного исполнителя (Исполнитель) и, при желании, срок (Срок (необязательно)). Срок — сегодня или позже.
  • Исполнитель должен иметь право перевести запись с текущего этапа.
  • Одно назначение действует на запись и все её языки.
  • Назначенный человек получает уведомление в админке, см. обратная связь и уведомления. Панель показывает Срок {date}, а после срока — Срок {date} · Просрочено.
  • Переход на другой этап согласования снимает назначение. Снять назначение снимает его вручную.
  • Отключён или Нет доступа рядом с исполнителем означает, что сейчас он действовать не может.

Раздел Задачи проверки дополняет общее назначение записи. В группе Назначение по языку выберите ответственного и срок для текущего языка, затем нажмите Сохранить. Назначения других языков и всей записи не изменятся. В списке доступны только подходящие участники; одновременные изменения не перезаписываются молча.

Сначала выберите язык задачи, затем ответственного. При смене языка список участников обновляется. Для Все языки доступны только те, кто может читать запись на каждом языке.

Для задачи заполните поле Задача, выберите Ответственный, язык и при необходимости Срок, затем нажмите Добавить задачу. Оставьте Обязательно до публикации, если без этой проверки публиковать нельзя. Ответственный должен иметь доступ к записи на выбранном языке. Он или участник с правом назначения может нажать Завершить. Открыть снова возвращает задачу на проверку, а Удалить снимает требование.

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

Раздел Замечания в боковой колонке хранит заметки тех, кто проверяет эту запись. Он виден только в админке. Это не публичная функция комментариев, и на сайт он не попадает.

  • Введите заметку и нажмите Добавить замечание. Заметка — от 1 до 2000 символов, в записи не больше 500 заметок.
  • У каждой заметки видно, кто и когда её написал и на какой версии. Если у записи появилась более новая версия, заметка сообщает Написано на более ранней версии (версия {version}, сейчас версия {current}).
  • Закрыть закрывает заметку и скрывает её. Показать {count} закрытых показывает закрытые, а Открыть снова открывает заметку снова.
  • Чтение зависит от права читать запись. Писать и закрывать заметки может тот, кто вправе её изменять. Роль, ограниченная своими записями, пишет только в своих записях. Тот, кто может читать, но не изменять, видит заметки без поля ввода.
  • Заметка относится к записи и к языковой версии, в которой вы её написали.

Перед отправкой отзыва выберите Поле, чтобы привязать обсуждение к нему, или оставьте Вся запись. Кнопка Ответить сохраняет поле и язык обсуждения. Закрытие обсуждения закрывает и ответы. Метка версии показывает, что отзыв был оставлен до последующих правок.

Откройте Уведомить и выберите людей или редакционные команды. Доступны только участники, которые сейчас могут читать запись, поле и язык обсуждения. Можно выбрать до 20 упоминаний; уведомления получат не более 50 человек. Участие в команде не даёт прав на контент. Уведомление открывает нужную запись и язык. Доступ проверяется и при чтении: отозванные права не раскрывают скрытый заголовок или поле.

Участники с правом выдачи доступа к сайту могут открыть Редакционные команды в разделе Задачи проверки и настроить названия и состав команд сайта. Назначения задач, их завершение и упоминания появляются в колокольчике вместе с уведомлениями рабочего процесса.

Если уведомления не загрузились, нажмите «Повторить» в панели уведомлений. При ошибке обновления уже загруженные уведомления останутся видны.

Колокольчик в шапке показывает уведомления, требующие вашего внимания. На значке указано число непрочитанных.

Вид Когда вы его получаете
Assignment Вам назначили запись. Назначение самому себе и повторное сохранение того же исполнителя ничего не отправляют.
Review request Запись или один из её языков перешёл на этап проверки. Уведомление получает тот, кто назван следующим исполнителем. Если никто не назван — все, кто может провести запись дальше с этого этапа и вправе проверять этот язык, до 50 человек, но не тот, кто сделал переход.
Return for changes Запись или один из её языков с этапа проверки вернулся на начальный этап. Уведомление получает названный исполнитель, иначе автор этого языка, если автор всё ещё может его читать.
  • Уведомление называет запись и её текущее состояние проверки, а не то, в котором оно создано, и ведёт к записи. Уведомление об одном языке называет его (Язык: th), показывает состояние этого языка и открывает этот язык.
  • Если вы больше не можете читать запись или этот язык, потому что роль изменилась или запись в корзине, уведомление гласит Запись, о которой вас уведомили, вам больше недоступна. Заголовка и ссылки в нём нет.
  • Отметить прочитанным, Отметить непрочитанным и Отметить все прочитанными меняют только ваш список.
  • Уведомление записывается вместе с переходом или назначением, которые его вызвали. Неудавшийся переход ничего не отправляет, а повторённый переход не отправляет ничего дважды.
  • Редактор, management API и команды плагинов уведомляют одинаково, потому что идут одним путём. Переход одного языка уведомляет так же, как переход всей записи.
  • Импорт по умолчанию тихий. Тот, кто запускает импорт, может выбрать уведомления флажком Уведомлять проверяющих об изменениях проверки в этом импорте на экране запуска; выбор хранится в задании и требует того же права data:import. Перенесённая история, например перенесённое назначение, не уведомляет никогда.
  • Письмо необязательно. Если в установке настроена почта (см. люди и доступ) и задан FRONTEND_URL, человек получает ещё и короткое письмо со ссылкой, без содержимого. Неудавшееся письмо не повторяется. Уведомление в админке существует в любом случае.
  • Напоминаний и чата нет.

При выходе из настроек, открытии другого процесса или закрытии редактора появится запрос на отмену несохранённых изменений. На телефоне кнопки сохранения и отмены остаются доступны при прокрутке. Если процессы не загрузились, нажмите «Повторить». Ошибка обновления не удаляет текущие правки.

Настройки → Процесс → Рабочие процессы показывает именованные рабочие процессы сайта. Рабочий процесс — набор состояний, через которые проходит запись, и переходы между ними. На сайте сразу есть один, он помечен По умолчанию для сайта.

  • Новый рабочий процесс начинается с копии процесса сайта по умолчанию. Дайте ему название. Добавьте состояния, отметьте ровно одно как Начальное, отметьте те, что публикуют, и добавьте переходы. Переход может требовать Утверждающие, Публикующие или тех, кто может снять с публикации.
  • В процессе не больше 16 состояний и 80 переходов, а на сайте — не больше 20 процессов. Ключ состояния — строчные буквы, цифры и подчёркивания, начинается с буквы. Из начального состояния должно быть можно дойти до состояния, которое публикует.
  • Изменить меняет названия, состояния и переходы. Удалить доступно только для процесса, который не использует ни одна модель и к которому не привязана ни одна запись. Процесс сайта по умолчанию удалить нельзя.
  • Рабочий процесс каждой модели задаёт каждой модели один процесс или процесс сайта по умолчанию. Запись использует процесс, к которому уже привязана, затем процесс своей модели, затем процесс сайта по умолчанию. Смена процесса модели касается новых записей.
  • Настройки → История фиксирует создание, изменение, удаление и назначение процесса.
  • Если во время вашего сохранения кто-то другой изменил процесс, удалил его или начал им пользоваться, сохранение отклоняется с workflow_changed, workflow_in_use или workflow_assigned. Ничего не записывается, ни одна запись не теряет состояние проверки. Перезагрузите страницу и повторите. Перемещение записи, проверенное по более старой версии процесса, отклоняется так же (workflow_changed).

Изменение, которое оставило бы записи в состоянии, которого больше нет, отклоняется, пока вы не просмотрите план. Это относится к удалению состояния, в котором есть записи, и к смене процесса модели, пока её записи на проверке.

  • Проверьте, как переместятся записи показывает состояния, сколько записей в каждом, и часть записей. Для каждого выберите новое состояние. При смене процесса модели можно также выбрать Оставить на текущем процессе.
  • Перенести записи и применить переносит записи по одной и показывает каждый результат: Перенесена, Отклонена, Изменилась за это время или Без изменений. Каждый перенос записывается в историю записи.
  • Проверенный перенос не может опубликовать запись или снять её с публикации. Такие записи сначала переведите обычными кнопками.
  • Один запрос переносит 25 записей. Экран повторяет его, пока не останется ни одной. Изменение или смена процесса модели применяется только когда не осталось ни одной записи. Если какую-то перенести не удалось, больше ничего не меняется. Исправьте и примените снова.
  • Пока к процессу привязаны записи, его начальное состояние и признак публикации у его состояний менять нельзя.

Первый, кто открыл запись на каком-то языке, удерживает её для редактирования. Остальные видят {name} сейчас редактирует. Они могут читать вместе с ним: форма показывает несохранённую работу владельца и обновляется каждые 10 секунд.

  • Сообщение Также открыто: {people}. Общие поля и связи сохраняются для всех языков. называет людей, работающих с другими языками той же записи.
  • Вы редактируете это в другой вкладке. означает, что запись удерживает ваша же другая вкладка.
  • Удержание заканчивается примерно через две минуты после того, как вкладка владельца перестала его продлевать, например когда вкладку закрыли или скрыли.

Нажмите Перехватить, чтобы редактировать. Удержание переходит к вам сразу.

  • Прежний владелец видит {name} перехватил(а) редактирование. Его следующее сохранение или переход будет отклонён.
  • Его несохранённые правки сохраняются как его личный черновик для восстановления. Он получит их обратно, когда снова будет удерживать запись.
  • Чтобы удерживать язык или перехватить его, ваша роль должна иметь право изменять этот язык (или создавать его, если строки записи на нём ещё нет). Роль, изменяющая только свои записи, должна владеть строкой этого языка. Иначе сервер отказывает (locale_denied или not_owner).
  • Пока запись удерживает другой человек, сохранения, переходы, назначения, восстановление, обход проверки и действия с корзиной из других сессий отклоняются. Плагины, импорт, публикация по расписанию и применение таблицы удержанием не блокируются.

Несохранённая работа сохраняется автоматически, вскоре после того как вы перестали печатать. Это один общий черновик на запись и язык; пишет его владелец удержания.

  • Люди, которым разрешено читать запись, видят черновик после перезагрузки на любом устройстве. Они видят только поля, которые им разрешено читать, в том числе при конфликте. Роль, читающая только свои записи, видит только черновики строк языков, которыми владеет.
  • Право чтения проверяется отдельно от права изменения. Роль, которая может изменить запись, но не может читать эту строку или этот язык, всё равно может записать черновик. Черновик, который она заменяет, ей никогда не показывается, а ответ о конфликте приходит без черновика.
  • Автосохранение или отмена черновика после перехвата отклоняются и ничего не меняют. Отклонённое автосохранение становится вашим черновиком для восстановления. При отклонённой отмене появляется сообщение Не удалено — редактирование перехвачено. Ваша работа сохранена. Набранное вами остаётся доступным как черновик для восстановления.
  • Черновик никогда не является версией. Сохранить превращает его в версию и очищает черновик.
  • Черновик хранится 30 дней после последнего изменения.
  • Новая запись до первого сохранения хранит ваш личный черновик.

Статус рядом с Сохранить говорит, что произошло:

Статус Значение
Сохранение черновика… Черновик сохраняется на сервере.
Черновик сохранён Черновик сохранён на сервере.
Нет сети — сохранено здесь Хранится на этом устройстве. Будет отправлен после восстановления связи или по кнопке Повторить.
Черновик не сохранён Запись не удалась. Нажмите Повторить.
Изменено на другом устройстве Нажмите Выбрать, чтобы выбрать версию.
Не сохранено — редактирование перехвачено Запись перехватили. Ваша работа стала вашим черновиком для восстановления.
Что вы видите Что произошло Что делать
Эту запись сохранил кто-то другой Другое сохранение прошло раньше. Ваши правки ещё в форме. Загрузить их версию или Перезаписать своей.
Несохранённые изменения ({age}) Черновик, который вы не сохранили. Восстановить или Отбросить.
Несохранённые изменения из старой версии Кто-то сохранил запись после создания вашего черновика. Сравнить, затем Применить мои изменения или Отбросить.
Другое устройство сохранило другие несохранённые изменения {age}. Выберите, что оставить. Два устройства записали разные черновики. Взять с другого устройства или Оставить эти.
Ваши собственные несохранённые изменения Ваша работа сохранена, когда запись перехватили. Восстановить или Отбросить.
Старый черновик удалён Черновик старше 30 дней. На экране сохранённая версия.

Откройте История из редактора. История показывает версии от старых к новым и отмечает их метками редактируемая версия и версия, которую видят посетители. Переходите кнопками Предыдущая ревизия и Следующая ревизия. Каждая версия показывает свои поля, ссылки и изображения. Чтение истории ничего не меняет.

Раскройте группу полей, чтобы прочитать вложенные блоки. Форматированный текст показан без HTML-тегов; точные сохранённые значения доступны в разделе Технические сведения. Общие поля видны при переключении языка, а связи на каждом языке показываются отдельно.

В поле Сравнить с выберите другую сохранённую версию. В изменённых полях удалённый текст зачёркнут, добавленный — подчёркнут. Открытая версия показана как результат изменений. Кнопки языков переключают сравниваемый перевод, включая настройки поиска и факты страницы. Видны только поля и названия связанных записей, к которым у вас сейчас есть доступ. Не задано означает, что поле не было записано; Пусто — что сохранено пустое значение. Замена связанной записи или файла отмечается, даже если название не изменилось. Сравнение ничего не сохраняет, не восстанавливает и не публикует. Чтобы выбрать более раннюю версию, сначала загрузите старые версии в истории.

В окне выбора связанной записи кнопка Создать {model} открывает обычный редактор, сохраняя черновик родительской записи. Кнопка с карандашом открывает существующую связанную запись. Поля, медиафайлы, переводы, проверка и конфликты сохранения работают как в полном редакторе. После сохранения обновляются выбранная запись и её название; родительская запись не сохраняется. Закрытие без сохранения оставляет прежний выбор и правки родительской записи. Если в дочерней записи есть несохранённые изменения, редактор предложит их отбросить или продолжить работу. Публикация остаётся отдельным действием.

  • Восстановить эту версию загружает эту версию в редактор и сохраняет её как новую. Восстанавливаются все языки и все поля. Нужно право восстановления на каждом языке записи.
  • Восстановить только {language} восстанавливает один язык. Остальные языки и опубликованное не меняются. Нужно право восстановления на этом языке.
  • Восстановление само по себе не публикует запись. Опубликуйте её отдельно, если посетители должны увидеть результат.

Число задаётся в разделе Настройки → Процесс → История версий → Версий на элемент. По умолчанию 50. Минимум 1.

  • Каждое сохранение или восстановление записи удаляет её самые старые версии сверх этого числа.
  • Редактируемая версия и все опубликованные версии сохраняются всегда. Версии, на которые ссылаются будущие ветки, их история или открытые предложения, тоже сохраняются.
  • Уменьшение числа ничего не удаляет сразу. Каждая запись сокращается при её следующем сохранении.
  • Удалённую версию нельзя открыть или восстановить. История сообщает Версия {version} больше не хранится — сайт хранит ограниченное число версий. Показана ближайшая сохранённая.

Нажмите В корзину в редакторе или в списке. Уходят все языки. Переместить этот язык в корзину убирает один язык.

  • Перемещение опубликованной записи или языковой версии в корзину отклоняется. Сначала снимите её с публикации.
  • Записи в корзине пропадают из списков, поиска, выбора связей и предпросмотра.
  • Нужно право удаления в этой модели.

Откройте Корзина над списком контента. Восстановить возвращает запись как черновик, с её версиями, переводами, ссылками и медиа.

  • Диалог перечисляет ссылки, которые не будут работать, например ссылки на записи, которые ещё в корзине или удалены навсегда.
  • Если адрес записи заняла другая запись, восстановление отклоняется. Сначала измените адрес той записи.

Удалить навсегда удаляет все языки, версии и ссылки записи, а также комментарии посетителей к ней. Действие требует подтверждения. Отменить его нельзя.

Запись или язык удаляется навсегда через 30 дней после перемещения в корзину. Столбец Удаление показывает эту дату.

  • Задание по расписанию выполняется раз в день. В поставляемой конфигурации Worker оно запускается в 03:17 UTC.
  • За один запуск удаляется не больше 50 записей на сайт, начиная с самых старых. Если подошёл срок у большего числа, остальные ждут следующего запуска.
  • Деактивированные сайты пропускаются, пока их снова не активируют.
  • Восстановление до удаления отменяет его.

Отметьте строки в списке контента. За один раз можно обработать не больше 25.

  • Перевести на… этап, затем Перевести.
  • Опубликовать сейчас и Снять с публикации сейчас — для ролей с правом обхода. Нужна причина, она записывается как обход.
  • В корзину.
  • В корзине: Восстановить и Удалить навсегда.

Каждая запись проверяется отдельно, по тем же правилам, что и одиночное действие. Отказ по одной записи не останавливает остальные, и ничего не откатывается. Итог показывает Обновлено: {done}, отклонено: {refused}. Для каждой отклонённой записи указана причина, например не ваша запись, опубликовано — сначала снимите с публикации или изменено кем-то другим. Языки одной записи переходят вместе, поэтому вторая строка той же записи учитывается один раз.

Отметьте флажок страницы над списком. Если под фильтры подходит больше записей, чем на одной странице, появляется строка Выбрать все подходящие: N. Нажмите её, чтобы выбрать все подходящие записи на всех страницах. Снимите отметку со строки, чтобы исключить запись; исключение сохраняется при переходе между страницами. Смена фильтров, условий по полям, поиска или типа контента отменяет выбор.

  • Выбираются все записи, которые ваша роль может читать и которые подходят под фильтры, условия по полям и поиск в момент начала. Набор фиксируется тогда. Записи, добавленные или изменённые позже, в него не попадают.
  • Одно изменение охватывает не более 5 000 записей. Если подходит больше, список сообщает об этом и не предлагает выбор: сначала сузьте фильтры.
  • Доступные действия: Перевести, Опубликовать сейчас и Снять с публикации сейчас (для ролей с правом обхода), В корзину и Изменить поля. Для Изменить поля список должен быть сужен до одного типа контента.
  • Записи, на которые ссылается другой контент, пропускаются, если они уходят из публикации или в корзину. После выполнения они перечислены как отклонённые; подтвердить их массово нельзя.

Изменить поля перечисляет поля типа контента, которым можно задать одно значение для всех выбранных записей: текст, число, да/нет, дата и поля выбора. Отметьте поле, задайте значение и выберите Применить к записям: N.

Поля, которые не предлагаются, перечислены с причиной:

  • Форматированный текст, ссылки, файлы и структурированный контент правятся по одной записи.
  • Поле, которое должно отличаться у каждой записи (уникальное).
  • Поле, заполняемое автоматически.
  • Приватное поле.
  • Поле, которое ваша роль не может менять.

Каждая запись сохраняется как при обычной правке: те же проверки, права на поля и языки, история версий и обновление кэша. Каждая изменённая запись получает одну новую версию. Запись, у которой уже стоит это значение, не трогается и помечается Менять не нужно.

Массовая операция обрабатывает записи шагами не более чем по 25. Индикатор показывает ход выполнения. Остановить останавливает обработку на текущем шаге; записи, до которых очередь ещё не дошла, не меняются. Если закрыть страницу или потерять соединение, при следующем открытии список предложит Продолжить. После неудачного шага Повторить продолжает то же изменение и не повторяет уже сделанное. Просматривать ход массовой операции и продолжать её может только пользователь, который её запустил.

Каждая запись проверяется заново, когда до неё доходит очередь, по тем же правилам, что и одиночное действие. В результате каждая запись отнесена к одной группе:

  • Изменено.
  • Менять не нужно.
  • Отказано с причиной, например не ваша запись или опубликовано — сначала снимите с публикации.
  • Изменено за это время: кто-то сохранил или переместил запись после фиксации набора. Ничего не перезаписывается.

Кнопки над результатом показывают одну группу.

Обмен через Экспорт таблицы → Импорт таблицы обновляет существующие записи одной модели, не меняя их ID или адреса. Каждая изменённая запись получает новую сохранённую версию. Чтобы создавать записи, выполнять upsert или добавлять переводы из CSV/XLSX, откройте Файлы коллекции и выберите режим, описанный ниже.

  1. Экспорт таблицы скачивает книгу Excel, по одному листу на язык.
  2. Измените ячейки. Не трогайте столбцы id, slug и current_version_id.
  3. Импорт таблицы: выберите файл .xlsx или файл .csv и укажите Язык этого CSV.
  4. Проверить файл. Проверка ничего не записывает. Она показывает строки, изменения и заблокированные строки, с номером строки и столбцом каждой проблемы.
  5. Применить N изменений. Применение работает, только если нет заблокированных строк, и только для того же файла, который вы проверили. Каждая изменённая запись получает новую версию. Ничего не публикуется.

Что содержит файл:

  • Только записи, которые вам разрешено читать и изменять. Роль, ограниченная своими записями, экспортирует только их. Строка чужой записи блокируется как не найденная.
  • Только поля, которые ваша роль может и читать, и менять, и по одному листу на каждый язык, который роль может читать. Файл, выгруженный ролью с ограничением полей, проверяется и применяется без остальных столбцов. Их сохранённые значения не меняются. Файл, в который вернули такой столбец, или лист на языке, который роль читать не может, блокируется.
  • slug на каждом листе — собственный адрес записи на языке этого листа.
  • Изменение на языке, который роль может читать, но не может менять, блокируется с locale_denied в его строке и столбце. Общее (непереводимое) поле хранится в основном языке, поэтому его изменение на любом листе считается изменением в основном языке.
  • В этом режиме обновления значения для ещё не существующего перевода блокируются с spreadsheet_locale_missing. Сначала добавьте перевод в редакторе или используйте Файлы коллекции: для добавления нужны права на этот язык и поля.
  • Нарушение правила в поле или языке, которые ваша роль не видит, показывается без названия этого поля или языка.
  • Ячейки связей содержат JSON-ссылки, например [{"model":"author","id":"entry_id"}] или [{"model":"author","slug":"jane","lang":"en"}]. Ссылки должны указывать на существующие записи этого сайта и соответствовать допустимым моделям и числу связей.
  • Ячейки медиа содержат JSON-ссылки, например [{"id":"media_id"}] или [{"storage_key":"folder/image.png"}], с необязательными crop и focal. Они выбирают существующие файлы библиотеки, а не загружают файл и не принимают произвольный URL.
  • Ячейки компонентов содержат те же JSON-значения, что и файл коллекции, включая вложенные и повторяемые компоненты. Пустая структурированная ячейка сохраняет значение; JSON null очищает значение или список связей. В режиме черновика обязательные значения можно оставить пустыми; строгая проверка модели и публикация требуют их заполнить. Общие связи и медиа должны совпадать на листах языков.
  • Строка, чья запись изменилась после выгрузки, блокируется. Выгрузите заново.
  • Книга, выгруженная до того, как каждый лист получил собственный адрес, может блокироваться с spreadsheet_slug_mismatch на листах других языков. Выгрузите заново.
  • Формулы отклоняются. Файл — не больше 10 MiB, не больше 20 000 строк на лист.

Если применение остановилось на середине, экран сообщит Применение остановлено и строку. Строки, сохранённые до этого, остаются. Перед повтором выгрузите таблицу заново.

Выгрузка всего сайта — отдельная задача оператора. См. импорт и миграция.

В разделе Файлы коллекции можно импортировать JSON, CSV и XLSX, чтобы создавать и обновлять записи одной модели с компонентами, связями, ссылками на медиа и переводами. Этот импорт работает отдельно от обновления через таблицу выше, копирования всего сайта и миграции из другой CMS. Откройте его в списке контента модели. Кнопка доступна ролям с правом чтения модели и создания или изменения её записей.

Скачать коллекцию сохраняет файл .json с записями, которые ваша роль может читать: языки, поля, связанные записи и медиа, доступные для чтения, и только свои записи, если право чтения ограничено ими. Большая коллекция скачивается частями (Скачать часть 2 и так далее); каждая часть импортируется отдельно.

Для CSV/XLSX указывайте ключи полей в заголовках столбцов, а при необходимости — id, slug и current_version_id. Для CSV выберите Язык этого CSV; названия листов Excel задают языки сайта. Ячейки компонентов, JSON, связей, медиа и точек содержат значения JSON, а не отдельные столбцы для вложенных полей. Для дат с часовым поясом тоже нужен JSON, например {"datetime":"2026-11-01T06:30:25.123Z","timezone":"America/New_York"}. В datetime укажите момент по UTC, а не местное время. Строки с одинаковым значением сопоставления на разных языковых листах образуют одну запись с переводами; общие значения должны совпадать. После выбора таблицы включается обновление по ID: для создания или upsert явно смените режим и способ сопоставления. Для всех трёх форматов действуют те же проверки, права на каждую строку и предел в 500 записей.

{
"format": "dee-wan-collection",
"version": 1,
"model": "article",
"entries": [
{
"id": "…",
"current_version_id": "…",
"primary_lang": "en",
"slugs": { "en": "hello", "th": "sawasdee" },
"locales": {
"en": { "title": "Hello", "faqs": [{ "question": "Why?" }] },
"th": { "title": "สวัสดี" }
},
"relations": { "related": [{ "model": "author", "id": "…" }] },
"locale_relations": {
"th": { "tags": [{ "model": "tag", "slug": "news", "lang": "th" }] }
},
"media": { "cover": [{ "id": "…", "storage_key": "…", "crop": null }] }
}
]
}
  • locales содержит значения полей в том виде, в каком запись их хранит: вложенные компоненты, JSON и форматированный текст сохраняют структуру. Пропущенное поле не затрагивается. null очищает его.
  • relations называет связанные записи как { "model", "id" } или { "model", "slug" } с необязательным lang (по умолчанию основной язык сайта). Связь с разными ссылками на каждом языке записывается в locale_relations. model пишется всегда и должен совпадать с моделью найденной записи. Поле, принимающее одну модель, отклоняет другую.
  • media называет файлы, уже лежащие в медиатеке этого сайта, по id или storage_key. Импорт ссылки никогда не загружает и не копирует файл. crop и focal сохраняются, если указаны.
  • slugs содержит адрес каждого языка. id и current_version_id читаются только при сопоставлении по id.
  • Файл — не больше 10 MiB, 500 записей и 32 уровней вложенности. Применение сохраняет по 20 строк за запрос, и экран продолжает, пока строки не закончатся.

Выберите, что делает файл и как находятся существующие записи.

Режим Строка без подходящей записи Строка с подходящей записью
Создать Создаётся. Отклоняется (collection_match_exists).
Обновить Отклоняется (spreadsheet_row_not_found). Обновляется, если отличается.
Создать или обновить Создаётся. Обновляется, если отличается, иначе без изменений.

Сопоставляйте по ID, Адрес (slug) или по полю модели, настроенному как уникальное. Slug читается на primary_lang записи. ID совпадает только с существующими записями, поэтому create и upsert по ID никогда не создают новую запись; для создания сопоставляйте по адресу или уникальному полю. Строка без значения для сопоставления, две строки с одним значением, две строки для одной записи и значение, которое есть у нескольких записей, отклоняются до любой записи (collection_match_missing, collection_duplicate_match, collection_duplicate_target, collection_match_ambiguous).

  1. Проверить файл. Проверка ничего не записывает. Она показывает строки для создания, для обновления, без изменений, сохранённые как есть и заблокированные, с указанием строки, языка и поля для каждой проблемы.
  2. Применить изменения. Применение работает, только если нет заблокированных строк, только для того же файла, который вы проверили, и только пока поля и правила модели остались теми, по которым шла проверка (collection_definitions_changed: проверьте заново).

Каждая строка записывается как ручная правка: та же проверка, история, сброс кэша и аудит. Ничего не публикуется.

Что блокируется: несуществующее поле или язык; ссылка на связь или медиа, которая ни на что не указывает, на запись в корзине, на запись другого сайта или не той модели (collection_relation_missing, collection_relation_in_trash, collection_relation_wrong_model, collection_media_missing); значение, которое редактор отклонил бы; связь, записанная в locales, и наоборот (collection_field_reference); модель, записи которой вам нельзя создавать, читать или изменять; перевод, которого у записи ещё нет, если роли нельзя создавать записи на этом языке или менять это поле (locale_denied, field_denied); изменённое поле или язык, запись в которые роли не разрешена (field_denied, locale_denied). Поле или язык, которые вы не меняли, по правам записи не проверяются.

Если current_version_id строки не совпадает с текущей версией записи и строка отличается от записи, запись сохраняется как есть (spreadsheet_version_conflict). Остальные строки применяются. Чтобы изменить такую запись, выгрузите заново. Если current_version_id не указан, строка сравнивается с записью в момент применения. Версия из файла другого сайта игнорируется, когда id не совпадает с найденной записью.

Применение сообщает по каждой строке: создана, обновлена, без изменений, сохранена или отклонена; у отклонённой строки показана причина. Оно никогда не заявляет, что весь файл применён одним шагом. Если экран сообщает, что последний шаг подтвердить не удалось, выберите Продолжить. Уже записанные строки читаются как не изменившиеся. Повтор того же файла никогда не создаёт вторую запись: созданная строка запоминается на 30 дней по файлу и номеру строки, а позже create отклоняет существующую запись, и upsert читает её как не изменившуюся.

Применение работает только для проверенного файла и сохраняет версию, которую запись имела при проверке. Запись, изменённая после проверки, остаётся как есть: сохранена (spreadsheet_version_conflict), правка редактора сохраняется. Проверка старше 30 дней или применение без проверки отклоняются с spreadsheet_not_checked: проверьте файл снова.

Повтор никогда не перезаписывает правку, сделанную после первого запуска файла. Запись, созданная файлом и затем изменённая кем-то, читается как без изменений (уже создана этим файлом). Запись, обновлённая файлом и затем изменённая кем-то, остаётся как есть: сохранена (spreadsheet_version_conflict). Перевод, начатый файлом, повторно не записывается, поэтому его поздние правки сохраняются.

Строка с языком, которого у существующей записи ещё нет, начинает этот перевод внутри группы переводов записи: с адресом (slugs), значениями полей, компонентами, связанными записями и ссылками на медиа. Для этого нужны право изменения модели, право создания для этого языка и право записи в поля. Без них строка блокируется (locale_denied, field_denied). Язык, не настроенный для сайта, блокируется как неизвестный язык. Неверные переданные значения и адрес, который уже занят другой записью, блокируют строку (field_validation_failed, slug_reserved). Незаполненные обязательные поля мешают сохранению только при строгой проверке модели; перед публикацией они проверяются всегда.

Для генерации нужны право ai:generate и настроенный для установки провайдер ИИ. Без провайдера генерация отклоняется. У каждого сайта есть почасовой лимит, по умолчанию 250 запросов.

  • Текстовые поля. Поле, настроенное в модели для генерации ИИ, показывает кнопку Создать с ИИ. Промпт ИИ не настроен означает, что у поля нет промпта.
  • Форматированный текст. Создать с ИИ открывает поле для промпта. Опишите, что нужно, и нажмите Создать.
  • Компоненты с A/B-вариантами. Создать варианты с ИИ добавляет варианты.

В текстовых полях и форматированном тексте ответ сначала показывается для проверки. Ничего не меняется, пока вы не нажмёте Применить. В текстовом поле Применить заменяет содержимое поля. В форматированном тексте Применить вставляет текст в позицию курсора. Ответ длиннее лимита поля обрезается, и панель предупреждает об этом до применения.

Изображения генерируются в медиатеке, см. медиа. Планировщик контента пишет целые черновики.

Работайте с файлами в медиатеке и настройте языки.

В боковой панели включите обновление переводов с ИИ. Выберите существующие языки и разрешите замену текста, включая ручные переводы. Сначала сохраняется исходник. ИИ переводит только изменённые переводимые текстовые поля и форматированный текст, затем сохраняет одну черновую версию с обычными проверками прав и версий. Если исходный текст не изменился, запрос к ИИ не отправляется. Остальные поля и языки не меняются. При очистке исходного текста соответствующее поле выбранного перевода тоже очищается; новый текст не генерируется. Смена исходного языка сбрасывает согласие. Ошибка перевода не отменяет сохранение исходника и показывается отдельно. Публикация выполняется отдельно.

В настройках страницы также есть Обновления переводов с ИИ для существующих языковых версий составной страницы. Выберите языки и явно разрешите замену, включая ручные переводы. Сначала сохраняется исходная страница. ИИ сравнивает прежний и новый исходный текст с собственным текстом каждого перевода и меняет только существующие текстовые поля. Каждый перевод сохраняет идентификаторы и порядок секций, макет, медиа, ссылки, код, закреплённые версии компонентов, ссылки на общие секции и факты. Форматирование абзацев и адреса ссылок сохраняются. Общие секции и закреплённые компоненты не изменяются. Переводы сохраняются последовательно через обычные проверки прав, версии и фактов. Если после сохранения исходника страница изменилась, проверьте её актуальное состояние перед повторным запуском перевода. Для каждого языка показан успех, отсутствие соответствующих изменений или ошибка. Если исходник не изменился или в нём не было текста ни до, ни после сохранения, запрос к ИИ не отправляется. Удаление исходного текста может удалить соответствующий перевод. Смена страницы, исходного языка или сайта сбрасывает согласие. Ошибка перевода не отменяет сохранение исходника; ввод во время перевода остаётся в редакторе. Публикация выполняется отдельно.

Откройте Контент → Папки записей и выберите папку или Без папки для всех моделей либо выбранной модели. Фильтр хранится в адресе и сохраняется при перезагрузке и возврате назад. Счётчики учитывают только доступные записи; переводы считаются одной записью.

С правом site:settings нажмите Новая папка для создания папки или выберите папку и нажмите Изменить, чтобы изменить название или родителя. Отмена закрывает форму без сохранения. Пустую папку можно удалить. Название содержит 1–80 символов; одинаковые названия в одной родительской папке запрещены без учёта регистра. Максимум 500 папок и пять уровней. Перед удалением переместите действующие записи и дочерние папки. Подтверждение показывает число записей в корзине, которые после восстановления окажутся без папки; история расположения сохраняется. Создание и переименование подтверждаются сообщением.

В записи откройте Текущая папка, выберите папку и Переместить запись. Управление и история расположения по умолчанию свёрнуты. Нужны права чтения и изменения с учётом владельца и правил доступа к записи. Все переводы используют папку основной записи. Перемещение не меняет адрес, ревизию или публикацию. История перемещений хранит перемещения отдельно; восстановление версии содержимого сохраняет текущую папку. В редакторе показаны последние 100 перемещений.

Дублировать сохраняет папку исходной записи, в том числе для составных страниц. Копия сайта переносит пустые папки и текущее расположение. Перенос истории также сохраняет события и подписи участников. Идентификаторы меняются; папки с одинаковым путём названий переиспользуются. Повторный импорт не перемещает записи предыдущего задания. Отмена сохраняет запись, если после импорта её переместили.

Конфигурация связи ограничивает варианты через filterChoices, варианты select — через when. Используется формат фильтров полей: максимум четыре условия и три уровня групп. У связи условия проверяют поля кандидата; у select — соседние поля формы. В компоненте используются соседние поля того же экземпляра.

{
"type": "relation",
"targetModel": "article",
"relationType": "manyToMany",
"filterChoices": [
{ "field": "department", "op": "eq", "values": ["$field:department"] }
]
}
{
"type": "select",
"options": [
{ "value": "general", "label": "General" },
{
"value": "sales",
"label": "Sales",
"when": [{ "field": "department", "op": "eq", "values": ["sales"] }]
}
]
}

Доступны $field:key, $user:id, $user:email, $entry:id, $entry:model, $entry:locale. Для буквального знака доллара используйте $$. Без нужного контекста вариантов нет. При изменении соседнего поля список доступных вариантов пересчитывается. Несовместимое сохранённое значение select остаётся видимым с предупреждением: замените его или нажмите Очистить. Сохранение повторно проверяет все выбранные значения, включая сохранённые зависимые поля: несовместимый выбор надо заменить. Связи соблюдают обычные права чтения; правило выбора не выдаёт новых прав.

Структурированные элементы внутри текста

Заголовок раздела «Структурированные элементы внутри текста»

Активный плагин может объявить встроенный элемент в меню Блоки → Блоки плагинов. Поставьте курсор внутри абзаца и выберите нужную подпись. Элемент остаётся в этом абзаце. Нажмите на его подпись, чтобы изменить объявленные плагином поля в диалоге. Закройте диалог, чтобы продолжить писать.

Элементы управления и предпросмотр рисует Dee Wan. Значения хранятся как структурированные данные с типом и версией плагина, а не как вставленная разметка. Отмена, сохранённые версии, восстановление, копирование сайта и импорт пакета сохраняют значения и ссылки. Публичный и генерируемый рендереры допускают здесь только строчную разметку: плагин не может вставить блочный элемент внутрь абзаца. Если плагин отключён или недоступен, элемент остаётся в сохранённом тексте, но не отображается публично. Обычные блоки плагинов по-прежнему доступны отдельно.

Для коллекции откройте Порядок записей и включите Ручной порядок. Требуется model:apply. Включите Показать в ручном порядке, затем перемещайте записи стрелками или перетаскивайте перед другой видимой записью. У всех переводов одна позиция. Скрытые, отфильтрованные записи и записи на других страницах сохраняют взаимное расположение; перемещение привязано к выбранной видимой записи. Новые группы добавляются в конец, а корзина и восстановление сохраняют позицию. Новая версия контента не создаётся.

Ручной порядок необязателен; предел — 20 000 групп переводов на модель. При одновременном изменении возникает конфликт: обновите список перед повторным перемещением. Публичный клиент запрашивает order=manual явно; остальные режимы сортировки работают как прежде. Сортировку по полю нельзя сочетать с ручным порядком. Курсор привязан к версии порядка и после перестановки отклоняется. Копия сайта переносит порядок новых групп, сохраняя существующие группы назначения. Отмена импорта возвращает прежний флажок порядка, только если последующие перестановки или изменения состава коллекции его не заменили.

Модель может объединять поля под переводимыми заголовками. Заголовок и справка используют язык интерфейса; если перевода нет, берётся основной язык сайта, затем исходная подпись. Название группы не меняет ключи полей и сохранённые значения.

В Scheduling добавьте запись в выпуск, выбрав Version → Independent future version, и задайте выпуску название и время. В записи откройте Будущие версии и выберите версию этого выпуска. У каждого выпуска свой контент и история сохранений. Его редактирование не меняет обычный черновик и опубликованную версию. Так можно готовить разные кампании для одной записи или страницы из секций.

В редакторе будущей версии выберите язык, измените поля либо секции и факты страницы и нажмите Сохранить. История будущей версии показывает её сохранения. Обязательные задачи проверки относятся к этому контенту. Кнопка Вернуться к записи открывает обычный черновик.

Предпросмотр до этого выпуска показывает опубликованный сайт с учётом более ранних запланированных выпусков, их публикаций и снятий с публикации, а затем выбранного выпуска. Для страниц из секций используйте предпросмотр в редакторе страницы. Сначала задайте время выпуска. Недоступный вам контент остаётся скрытым. Такой предпросмотр не меняет публикацию или публичный кеш.

При начале команды публикации выпуск фиксирует точную будущую версию: после этого она доступна только для чтения. Правки обычного черновика сохраняются. Если в выпуск добавлен обычный черновик, публикуется его последнее сохранение. Два выпуска не могут менять одну запись на пересекающихся языках в один и тот же момент; задайте разное время.

Откройте один тип контента, выберите записи или Выбрать все подходящие, затем нажмите Массовая обработка ИИ. Выберите текстовые поля и действие: Переписать, Перевести, Применить терминологию или Сократить. Для перевода укажите разные исходный язык и язык перевода. Для терминологии внесите нужные термины в Указания.

Кнопка Подготовить предложения фиксирует выбранные записи. Записи, которые подойдут под фильтр позже, в обработку не попадут. Нужны права на использование ИИ и чтение исходного контента. Обработка не сохраняет записи: каждое предложение хранит исходную версию и исходные значения. При переводе для каждой выбранной группы переводов создаётся не более одного предложения.

Нажмите Проверить предложения, чтобы сравнить исходный текст с предложением, изменить его, применить или отклонить. При применении проверяются ваши текущие права на поля, язык и запись, правила проверки значений и версия записи. Если запись изменилась после подготовки предложения, применить его нельзя. Изменение и применение предложения также проверяют его собственную версию: правки другого участника не будут затёрты. Если нужного перевода ещё нет, применение создаст его обычным сохранением версии; язык должен быть настроен на сайте.

Если закрыть страницу, незавершённую обработку можно возобновить кнопкой Продолжить. Кнопка Остановить окончательно отменяет оставшуюся обработку; готовые предложения и результат уже начатого запроса сохранятся. Временные ошибки провайдера допускают до трёх попыток; сохранённые предложения повторно не создаются. Откройте Массовая обработка ИИ снова, чтобы проверить последний запуск, или откройте запись с её предложениями. Ключи ИИ остаются на сервере.


Стабильная версия ещё не выпущена (pre-MVP)
Коммит исходного кода: fe23db481c422b40e317b92fc98116b4c0c26a87 (с локальными изменениями)
Дата сборки (UTC): 2026-10-18T09:22:34.630Z
Коммит для обновления: не определён: в рабочей копии есть изменения. Примечания к выпуску