Staging treści między środowiskami.
Staging treści to budowanie i recenzowanie stron kreatora DXPR, zanim zobaczą je odwiedzający. Są dwa sposoby: osobna witryna stagingowa, której treści przenosisz na produkcję, albo rewizje Drupala i moderacja treści w jednej witrynie. Ta strona opisuje oba i podaje dokładnie, co zapis w kreatorze robi z rewizjami i stanami moderacji, ponieważ to decyduje, które podejście sprawdzi się u ciebie.
Co robi zapis w kreatorze
Każdy zapis z edytora wykonuje te kroki:
- Wczytuje domyślną rewizję strony w edytowanym języku.
- Sprawdza, czy bieżący użytkownik może aktualizować stronę.
- Zapisuje nowy HTML do pola.
- Jeśli typ encji ma rewizje, tworzy nową rewizję i czyni ją domyślną.
Bieżący użytkownik zostaje jej autorem, z komunikatem dziennika
Saved with DXPR builderi czasem żądania. - Usuwa blokadę edycji dla tej strony i rewizji, potem zapisuje stronę.
Żądanie stojące za zapisem opisane jest w punktach końcowych API.
Każdy zapis w węźle albo bloku Drag and Drop tworzy więc nową
rewizję, niezależnie od tego, czy typ treści ma zaznaczone Create new
revision, a karta Revisions wymienia każdy zapis z komunikatem
dziennika kreatora. Drush dxb:page:update też tworzy rewizję, z komunikatem
dziennika Updated via dxb:page:update Drush command.
Kreator nie ma kontrolki stanu moderacji i nigdy nie ustawia
moderation_state. Gdy moderacja treści jest włączona dla typu treści,
nowa rewizja zachowuje stan rewizji wczytanej przez kreator, a moderacja
treści stosuje reguły tego stanu przy zapisie:
- Opublikowana strona pozostaje opublikowana, a nowa rewizja od razu wchodzi na żywo.
- Nieopublikowana strona w stanie Draft pozostaje w stanie Draft.
- Problemem jest strona z opublikowaną domyślną rewizją i nowszym oczekującym szkicem: kreator wczytuje rewizję opublikowaną, nie szkic, więc zapis tworzy nową opublikowaną rewizję z opublikowanej treści i odkłada zmiany szkicu na bok.
Stany zmieniaj formularzem edycji węzła. Do procesu recenzji wewnątrz jednej witryny trzymaj strony nieopublikowane (Draft), gdy redaktorzy pracują nad nimi w kreatorze, i publikuj formularzem, gdy recenzja się zakończy.
Praca z witryną stagingową
Osobna witryna stagingowa omija powyższe ograniczenia moderacji i pozwala interesariuszom recenzować prawdziwą stronę.
- Redaktorzy budują i zmieniają strony w witrynie stagingowej.
- Recenzenci zatwierdzają je tam.
- Przenieś zatwierdzone treści na produkcję jedną z metod poniżej.
- Sprawdź stronę na produkcji jako anonimowy odwiedzający.
Kopia bazy danych
Skopiuj całą bazę danych ze stagingu na produkcję:
drush sql:sync @staging @production
Zastępuje to całą treść produkcyjną, więc najpierw wykonaj kopię zapasową produkcji i spodziewaj się utraty zmian wprowadzonych na produkcji po kopii. Plików to nie obejmuje; synchronizuj je jak opisano poniżej.
Selektywny eksport treści
Aby przenieść pojedyncze strony, wyeksportuj węzeł modułem takim jak
Default Content, łącznie z mediami i plikami, do których strona się odwołuje,
i zaimportuj go na produkcji. Kreator trzyma swój HTML w polu tekstowym,
więc wartość pola podróżuje z węzłem. Ścieżki obrazów w HTML wskazują
do sites/default/files/dxpr_builder_images, więc skopiuj też te pliki.
Wdrożenie samej konfiguracji
Jeśli to, co zbudowano, jest układem wielokrotnego użytku, a nie konkretną stroną:
-
Na stagingu zapisz układ poleceniem More > Save as template na pasku kontenera. Tworzy to szablon użytkownika.
-
Przejdź do DXPR Studio > DXPR Builder > User Templates i wybierz Create page template w operacjach tego szablonu.
-
Wyeksportuj konfigurację:
drush config:export -
Wdróż plik
dxpr_builder.page_template.*.ymli zaimportuj go na produkcji:drush config:import -
Redaktorzy zaczynają nowe strony od szablonu na produkcji. Szablony stron pojawiają się w pustych kontenerach.
Synchronizacja plików
Przesłane pliki z kreatora trafiają do dxpr_builder_images,
dxpr_builder_videos i dxpr_builder_files w domyślnym katalogu plików
witryny. Synchronizuj je wraz z treścią:
rsync -avz staging:/path/to/files/ production:/path/to/files/
Współdzielony magazyn plików, na przykład S3 zamontowany w obu środowiskach, usuwa ten krok.
Rewizje i wycofywanie
Ponieważ każdy zapis jest rewizją, wycofywanie jest operacją Drupala:
- Otwórz kartę Revisions strony.
- Znajdź rewizję sprzed niechcianego zapisu; każdy zapis kreatora
pokazuje
Saved with DXPR builder. - Kliknij Revert.
Wycofanie tworzy kolejną rewizję, więc historia pozostaje nienaruszona.
Blokady edycji
Gdy redaktor pierwszy raz kliknie w kontener, edytor wysyła żądanie
dxpr_toggle_content_lock do /dxpr_builder/ajax, a tabela
dxpr_lock zapisuje encję, rewizję, język i użytkownika.
Gdy inny redaktor otworzy stronę, edytor odpytuje
dxpr_content_lock_status, ukrywa kontrolki kontenera i pokazuje
przycisk Locked z nazwą posiadacza blokady. Zapis usuwa wiersz.
Inny
redaktor może też kliknąć Locked i potwierdzić, aby przejąć blokadę;
od tej pory wygrywa ostatni zapis.
Co dalej?
- Kopia zapasowa i przywracanie przed kopiowaniem bazy danych.
- Kontrola wersji do wdrażania konfiguracji takiej jak szablony stron.