Staging de contenu.

Apprendre DXPR BuilderGérer le sitePasser en production

Le staging de contenu consiste à construire et relire des pages DXPR Builder avant que les visiteurs ne les voient. Il y a deux façons de le faire : un site de staging séparé dont vous déplacez le contenu vers la production, ou les révisions de Drupal et Content Moderation sur un seul site. Cette page couvre les deux, et précise exactement ce qu’un enregistrement du builder fait aux révisions et aux états de modération, car c’est ce qui décide de l’approche adaptée pour vous.

Ce que fait un enregistrement du builder

Chaque enregistrement depuis l’éditeur exécute ces étapes :

  1. Il charge la révision par défaut de la page, dans la langue modifiée.
  2. Il vérifie que l’utilisateur actuel peut mettre à jour la page.
  3. Il écrit le nouveau HTML dans le champ.
  4. Si le type d’entité a des révisions, il crée une révision et en fait la révision par défaut. L’utilisateur actuel en devient l’auteur, avec le message de journal Saved with DXPR builder et l’heure de la requête.
  5. Il retire le verrou de modification pour cette page et cette révision, puis enregistre la page.

La requête derrière un enregistrement est décrite sous Points d’accès de l’API.

Chaque enregistrement sur un nœud ou un Drag and Drop Block crée donc une révision, que le type de contenu ait Create new revision coché ou non, et l’onglet Revisions liste chaque enregistrement avec le message de journal du builder. Drush dxb:page:update crée aussi une révision, avec le message de journal Updated via dxb:page:update Drush command.

Le builder ne propose aucun réglage pour l’état de modération et ne définit jamais moderation_state. Quand Content Moderation est activé sur le type de contenu, la nouvelle révision garde l’état de la révision chargée par le builder, et Content Moderation applique les règles de cet état à l’enregistrement :

  • Une page publiée reste publiée, et la nouvelle révision est mise en ligne aussitôt.
  • Une page non publiée en Draft reste en Draft.
  • Une page avec une révision par défaut publiée et un brouillon en attente plus récent pose problème : le builder charge la révision publiée, pas le brouillon, donc un enregistrement crée une nouvelle révision publiée depuis le contenu publié et laisse de côté les changements du brouillon.

Utilisez le formulaire de modification du nœud pour changer d’état. Pour un processus de relecture sur un seul site, gardez les pages non publiées (Draft) pendant que les contributeurs y travaillent dans le builder, et publiez via le formulaire quand la relecture est terminée.

Flux avec site de staging

Un site de staging séparé évite les limites de modération ci-dessus et laisse les parties prenantes relire la vraie page.

  1. Les contributeurs construisent et changent les pages sur le site de staging.
  2. Les relecteurs les y approuvent.
  3. Déplacez le contenu approuvé vers la production avec l’une des méthodes ci-dessous.
  4. Vérifiez la page sur la production en visiteur anonyme.

Copie de base de données

Copiez toute la base de données du staging vers la production :

drush sql:sync @staging @production

Cela remplace tout le contenu de production, donc sauvegardez la production d’abord et attendez-vous à perdre les changements faits en production après la copie. Les fichiers ne sont pas inclus ; synchronisez-les comme décrit ci-dessous.

Export sélectif de contenu

Pour déplacer des pages isolées, exportez le nœud avec un module comme Default Content, avec les médias et fichiers référencés par la page, et importez-le en production. Le builder stocke son HTML dans le champ de texte, donc la valeur du champ voyage avec le nœud. Les chemins d’images dans le HTML pointent vers sites/default/files/dxpr_builder_images, donc copiez aussi ces fichiers.

Déploiement de la configuration uniquement

Si ce que vous avez construit est une mise en page réutilisable plutôt qu’une page précise :

  1. Sur le staging, enregistrez la mise en page avec More > Save as template sur la barre du conteneur. Cela crée un modèle d’utilisateur.

  2. Accédez à DXPR Studio > DXPR Builder > User Templates et choisissez Create page template dans les opérations de ce modèle.

  3. Exportez la configuration :

    drush config:export
    
  4. Déployez le fichier dxpr_builder.page_template.*.yml et importez-le en production :

    drush config:import
    
  5. Les contributeurs commencent de nouvelles pages depuis le modèle en production. Les modèles de page apparaissent dans les conteneurs vides.

Synchronisation des fichiers

Les téléversements du builder vont vers dxpr_builder_images, dxpr_builder_videos et dxpr_builder_files dans le répertoire de fichiers par défaut du site. Synchronisez-les avec le contenu :

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

Un stockage de fichiers partagé comme S3, monté sur les deux environnements, supprime cette étape.

Révisions et retour en arrière

Comme chaque enregistrement est une révision, revenir en arrière est une opération Drupal :

  1. Ouvrez l’onglet Revisions de la page.
  2. Retrouvez la révision d’avant l’enregistrement indésirable ; chaque enregistrement du builder affiche Saved with DXPR builder.
  3. Cliquez sur Revert.

Revenir en arrière crée une autre révision, donc l’historique reste intact.

Verrous de modification

Quand un contributeur clique d’abord dans un conteneur, l’éditeur envoie une requête dxpr_toggle_content_lock à /dxpr_builder/ajax et la table dxpr_lock enregistre l’entité, la révision, la langue et l’utilisateur. Quand un autre contributeur ouvre la page, l’éditeur interroge dxpr_content_lock_status, masque les contrôles du conteneur et affiche un bouton Locked avec le nom du détenteur du verrou. L’enregistrement supprime la ligne. Un autre contributeur peut aussi cliquer sur Locked et confirmer pour forcer le verrou ; dès lors, c’est le dernier enregistrement qui gagne.

Et ensuite ?