Стейджинг вмісту.
Стейджинг вмісту це побудова та перегляд сторінок DXPR Builder до того, як їх побачать відвідувачі. Є два способи це робити: окремий стейджинговий сайт, чий вміст ви переносите на продакшн, або ревізії Drupal і Content Moderation на одному сайті. Ця сторінка охоплює обидва й точно каже, що збереження конструктором робить із ревізіями та станами модерації, бо це вирішує, який підхід працює для вас.
Що робить збереження конструктором
Кожне збереження з редактора виконує ці кроки:
- Він завантажує типову ревізію сторінки мовою, що редагується.
- Він перевіряє, що поточний користувач може оновити сторінку.
- Він пише новий HTML у поле.
- Якщо тип сутності має ревізії, він створює нову ревізію й
робить її типовою ревізією. Поточний користувач стає її
автором, з повідомленням журналу
Saved with DXPR builderі часом запиту. - Він знімає блокування редагування для цієї сторінки та ревізії, потім зберігає сторінку.
Запит за збереженням описано в Кінцевих точках API.
Отже, кожне збереження на ноді або блоці Drag and Drop створює нову
ревізію, незалежно від того, чи тип вмісту має позначене Create new
revision, а вкладка Revisions перелічує кожне збереження з
повідомленням журналу конструктора. Drush dxb:page:update також створює
ревізію, з повідомленням журналу Updated via dxb:page:update Drush command.
Конструктор не має елемента керування станом модерації й ніколи не встановлює
moderation_state. Коли Content Moderation увімкнено на
типі вмісту, нова ревізія зберігає стан ревізії, яку завантажив конструктор,
і Content Moderation застосовує правила цього стану
під час збереження:
- Опублікована сторінка лишається опублікованою, і нова ревізія одразу йде в ефір.
- Неопублікована сторінка в Draft лишається в Draft.
- Сторінка з опублікованою типовою ревізією та новішою очікуваною чернеткою це проблема: конструктор завантажує опубліковану ревізію, а не чернетку, тож збереження створює нову опубліковану ревізію з опублікованого вмісту й лишає зміни чернетки осторонь.
Використовуйте форму редагування ноди, щоб змінювати стани. Для процесу перегляду всередині одного сайту тримайте сторінки неопублікованими (Draft), поки редактори працюють над ними в конструкторі, і публікуйте через форму, коли перегляд завершено.
Робочий процес стейджингового сайту
Окремий стейджинговий сайт уникає обмежень модерації вище й дозволяє стейкхолдерам переглядати справжню сторінку.
- Редактори будують і змінюють сторінки на стейджинговому сайті.
- Там їх перевіряють і схвалюють.
- Перенесіть схвалений вміст на продакшн одним із методів нижче.
- Перевірте сторінку на продакшені як анонімний відвідувач.
Копія бази даних
Скопіюйте всю базу даних зі стейджингу на продакшн:
drush sql:sync @staging @production
Це замінює весь вміст продакшену, тож спершу зробіть резервну копію продакшену й очікуйте втратити зміни, внесені на продакшені після копії. Файли не включено; синхронізуйте їх, як описано нижче.
Вибірковий експорт вмісту
Щоб перенести окремі сторінки, експортуйте ноду модулем на кшталт
Default Content, включно з медіа та файлами, на які посилається сторінка,
і імпортуйте її на продакшені. Конструктор зберігає свій HTML у
текстовому полі, тож значення поля подорожує з нодою. Шляхи зображень
у HTML вказують у sites/default/files/dxpr_builder_images,
тож скопіюйте й ці файли.
Розгортання лише конфігурації
Якщо те, що ви побудували, це макет багаторазового використання, а не конкретна сторінка:
-
На стейджингу збережіть макет через More > Save as template на панелі контейнера. Це створює шаблон користувача.
-
Перейдіть до DXPR Studio > DXPR Builder > User Templates і виберіть Create page template в операціях цього шаблону.
-
Експортуйте конфігурацію:
drush config:export -
Розгорніть файл
dxpr_builder.page_template.*.ymlі імпортуйте його на продакшені:drush config:import -
Редактори починають нові сторінки з шаблону на продакшені. Шаблони сторінок з’являються в порожніх контейнерах.
Синхронізація файлів
Завантаження з конструктора йдуть до dxpr_builder_images,
dxpr_builder_videos і dxpr_builder_files у типовій
теці файлів сайту. Синхронізуйте їх із вмістом:
rsync -avz staging:/path/to/files/ production:/path/to/files/
Спільне сховище файлів на кшталт S3, змонтоване на обох середовищах, знімає цей крок.
Ревізії та відкат
Бо кожне збереження це ревізія, відкат це операція Drupal:
- Відкрийте вкладку Revisions сторінки.
- Знайдіть ревізію перед небажаним збереженням; кожне збереження конструктором
показує
Saved with DXPR builder. - Натисніть Revert.
Відкат створює ще одну ревізію, тож історія лишається цілою.
Блокування редагування
Коли редактор уперше натискає в контейнері, редактор надсилає
запит dxpr_toggle_content_lock до /dxpr_builder/ajax, а
таблиця dxpr_lock записує сутність, ревізію, мову та користувача.
Коли інший редактор відкриває сторінку, редактор запитує
dxpr_content_lock_status, ховає елементи керування контейнера й показує
кнопку Locked з іменем власника блокування. Збереження
видаляє рядок. Інший
редактор також може натиснути Locked і підтвердити, щоб перевизначити блокування;
відтоді перемагає останнє збереження.
Що далі?
- Резервне копіювання та відновлення перед запуском копії бази даних.
- Контроль версій для розгортання конфігурації, як-от шаблони сторінок.