Стейджинг вмісту.

Вивчення DXPR BuilderКерування сайтомЗапуск у продакшні

Стейджинг вмісту це побудова та перегляд сторінок DXPR Builder до того, як їх побачать відвідувачі. Є два способи це робити: окремий стейджинговий сайт, чий вміст ви переносите на продакшн, або ревізії Drupal і Content Moderation на одному сайті. Ця сторінка охоплює обидва й точно каже, що збереження конструктором робить із ревізіями та станами модерації, бо це вирішує, який підхід працює для вас.

Що робить збереження конструктором

Кожне збереження з редактора виконує ці кроки:

  1. Він завантажує типову ревізію сторінки мовою, що редагується.
  2. Він перевіряє, що поточний користувач може оновити сторінку.
  3. Він пише новий HTML у поле.
  4. Якщо тип сутності має ревізії, він створює нову ревізію й робить її типовою ревізією. Поточний користувач стає її автором, з повідомленням журналу Saved with DXPR builder і часом запиту.
  5. Він знімає блокування редагування для цієї сторінки та ревізії, потім зберігає сторінку.

Запит за збереженням описано в Кінцевих точках 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), поки редактори працюють над ними в конструкторі, і публікуйте через форму, коли перегляд завершено.

Робочий процес стейджингового сайту

Окремий стейджинговий сайт уникає обмежень модерації вище й дозволяє стейкхолдерам переглядати справжню сторінку.

  1. Редактори будують і змінюють сторінки на стейджинговому сайті.
  2. Там їх перевіряють і схвалюють.
  3. Перенесіть схвалений вміст на продакшн одним із методів нижче.
  4. Перевірте сторінку на продакшені як анонімний відвідувач.

Копія бази даних

Скопіюйте всю базу даних зі стейджингу на продакшн:

drush sql:sync @staging @production

Це замінює весь вміст продакшену, тож спершу зробіть резервну копію продакшену й очікуйте втратити зміни, внесені на продакшені після копії. Файли не включено; синхронізуйте їх, як описано нижче.

Вибірковий експорт вмісту

Щоб перенести окремі сторінки, експортуйте ноду модулем на кшталт Default Content, включно з медіа та файлами, на які посилається сторінка, і імпортуйте її на продакшені. Конструктор зберігає свій HTML у текстовому полі, тож значення поля подорожує з нодою. Шляхи зображень у HTML вказують у sites/default/files/dxpr_builder_images, тож скопіюйте й ці файли.

Розгортання лише конфігурації

Якщо те, що ви побудували, це макет багаторазового використання, а не конкретна сторінка:

  1. На стейджингу збережіть макет через More > Save as template на панелі контейнера. Це створює шаблон користувача.

  2. Перейдіть до DXPR Studio > DXPR Builder > User Templates і виберіть Create page template в операціях цього шаблону.

  3. Експортуйте конфігурацію:

    drush config:export
    
  4. Розгорніть файл dxpr_builder.page_template.*.yml і імпортуйте його на продакшені:

    drush config:import
    
  5. Редактори починають нові сторінки з шаблону на продакшені. Шаблони сторінок з’являються в порожніх контейнерах.

Синхронізація файлів

Завантаження з конструктора йдуть до dxpr_builder_images, dxpr_builder_videos і dxpr_builder_files у типовій теці файлів сайту. Синхронізуйте їх із вмістом:

rsync -avz staging:/path/to/files/ production:/path/to/files/

Спільне сховище файлів на кшталт S3, змонтоване на обох середовищах, знімає цей крок.

Ревізії та відкат

Бо кожне збереження це ревізія, відкат це операція Drupal:

  1. Відкрийте вкладку Revisions сторінки.
  2. Знайдіть ревізію перед небажаним збереженням; кожне збереження конструктором показує Saved with DXPR builder.
  3. Натисніть Revert.

Відкат створює ще одну ревізію, тож історія лишається цілою.

Блокування редагування

Коли редактор уперше натискає в контейнері, редактор надсилає запит dxpr_toggle_content_lock до /dxpr_builder/ajax, а таблиця dxpr_lock записує сутність, ревізію, мову та користувача. Коли інший редактор відкриває сторінку, редактор запитує dxpr_content_lock_status, ховає елементи керування контейнера й показує кнопку Locked з іменем власника блокування. Збереження видаляє рядок. Інший редактор також може натиснути Locked і підтвердити, щоб перевизначити блокування; відтоді перемагає останнє збереження.

Що далі?