콘텐츠 스테이징.

Learn DXPR BuilderManage the siteNaar productie

콘텐츠 스테이징은 방문자에게 표시되기 전에 DXPR Builder 페이지를 만들고 검토하는 작업입니다. 두 가지 방법이 있습니다. 콘텐츠를 프로덕션으로 옮기는 별도의 스테이징 사이트를 사용하거나,단일 사이트에서 Drupal의 리버전과 Content Moderation을 사용하는 방법입니다. 이 페이지에서는 두 방법을 모두 다루며, 빌더 저장이 리버전과 중재 상태에 정확히 어떤 영향을 주는지 설명합니다. 이 동작이 적합한 방식을 결정하기 때문입니다.

빌더 저장의 동작

에디터에서의 모든 저장은 다음 단계를 실행합니다:

  1. 편집 중인 언어로 페이지의 default revision(을)를 불러옵니다.
  2. 현재 사용자가 페이지를 업데이트할 수 있는지 확인합니다.
  3. 새 HTML을 필드에 씁니다.
  4. 엔터티 유형에 리버전이 있으면 새 리버전을 만들고 기본 리버전으로 지정합니다. 현재 사용자가 작성자가 되며, 로그 메시지 Saved with DXPR builder(와)과 요청 시간이 기록됩니다.
  5. 해당 페이지와 리버전의 편집 잠금을 제거한 뒤 페이지를 저장합니다.

저장의 요청 내용은 API endpoints 문서에 설명되어 있습니다.

따라서 노드나 Drag and Drop Block의 모든 저장은 콘텐츠 유형에 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(을)를 클릭하고 확인하여 잠금을 재정의할 수도 있습니다. 이후부터는 마지막 저장이 적용됩니다.

다음 단계

  • Backup and restore 문서에서 데이터베이스 복사 전 백업 방법을 확인하세요.
  • Version control 문서에서 페이지 템플릿 같은 설정 배포를 확인하세요.