Contenu éditorial et données applicatives sur la même page
Une page de journal contient souvent deux types de contenu. Un éditeur rédige l’introduction et décide de la façon dont la page doit être lue. Une liste changeante d'entrées fournit les titres et les descriptions en dessous.
La copie de ces entrées dans des blocs de pages crée un autre emplacement pour les conserver. Faire de la page entière un flux de données abandonne l’introduction et la composition éditoriales. Les sources de contenu WebBlocks CMS vous permettent de choisir les champs qui suivent une source tout en gardant le reste de la page modifiable.
Cette procédure pas à pas utilise Northstar Studio, un site vitrine fictif exécutant WebBlocks CMS 1.90.2. Sa source de journal renvoie des enregistrements synthétiques. Les captures d'écran démontrent la fonctionnalité ; il ne s'agit pas d'une implémentation client ni d'un flux automatique de pages CMS approuvées.
Commencez par la page que vous souhaitez que les lecteurs voient
L'exemple combine un titre, une introduction éditoriale et une grille d'entrées de journal à trois colonnes. Chaque carte contient un titre et une description.
L'introduction reste sous forme de texte enrichi ordinaire. L'en-tête de la page tire son titre d'une entrée sélectionnée. La Grille utilise une source de collecte pour remplir ses cartes. Changer l'introduction ne modifie pas les enregistrements source ; la modification d'un titre source peut modifier la page rendue sans modifier ce texte dans le CMS.
Connecter une seule rubrique à un enregistrement
Ouvrez Settings dans le bloc Header et trouvez Content source. Pour son titre, sélectionnez Northstar entry, l’enregistrement Field Notes et le champ Title. Le titre affiché est désormais « Field Notes ».
Le texte stocké dans le bloc reste disponible en secours. Dans cette démonstration, il s'agit de « Editorial fallback: Journal entry », ce qui rend le comportement facile à reconnaître. Sur une vraie page, écrivez une solution de secours qui a toujours du sens pour les lecteurs.
Il s’agit d’une liaison de champ explicite. Un développeur fournit d’abord la source et déclare les champs disponibles. L’éditeur sélectionne un champ compatible et un enregistrement de cette source. Le CMS n’expose pas automatiquement chaque table de la base de données.
Créez une carte, puis répétez-la
Pour la liste des journaux, créez une grille et ajoutez une pile en tant qu'enfant direct. À l’intérieur de cette pile, ajoutez les blocs d’en-tête et de texte enrichi qui forment une seule carte. Cet enfant est le modèle de la collection.
Dans Settings du bloc Grid, choisissez Northstar journal comme collection, sélectionnez Stack comme enfant à répéter et limitez le résultat à trois enregistrements. L’exemple trie par Title en ordre croissant et affiche Autumn field notes, Materials and process et Working with natural light.
L'aperçu source vous permet d'inspecter des exemples d'enregistrements lors de la configuration de la collection. Cela permet de détecter un titre inattendu ou une sélection inappropriée avant de juger la mise en page.
Ouvrez Header dans le modèle et reliez son titre à Current collection item → Title. Reliez Rich Text au champ Description de l’élément courant. Chaque carte répétée lit désormais son propre enregistrement.
Le moteur de rendu répète le modèle au moment de l'exécution. Il ne crée pas d’arborescence de blocs CMS stockée séparément pour chaque enregistrement. Vous conservez un modèle de carte, tandis que la source fournit les entrées. Les autres enfants manuels peuvent rester dans le conteneur et conserver leur position.
Décider de ce que doit dire une liste vide
Un résultat vide est une décision éditoriale. Pour cette présentation, la grille masque le modèle lorsque la source ne renvoie aucun enregistrement. Afficher un exemple d’entrée de journal suggérerait autrement qu’une entrée existe.
Une erreur du résolveur est une condition différente. L'exemple conserve le modèle de secours en cas d'erreur, afin que la page puisse toujours afficher son texte stocké. Cette solution de secours doit être examinée avec autant d’attention que le contenu normal. Un message rassurant mais inexact reste inexact.
Les sources manquantes ou désactivées, le refus d'accès et un modèle non valide conservent également les enfants d'origine. Ils ne suivent pas le paramètre valid-empty-result. Pour une liaison de champ individuelle, un enregistrement indisponible ou une valeur vide revient à la valeur éditoriale configurée ou stockée.
Choisir « Masquer lorsqu'il est vide » ne signifie donc pas « Masquer en cas de problème ». Prévisualisez le résultat attendu et comprenez le chemin de l’échec avant de publier.
Conserver une limite éditoriale délibérée
Les collections dynamiques conviennent aux pages qui doivent suivre les enregistrements actuels : un index de journal, une liste d'événements ou un catalogue changeant. Une page de campagne sélectionnée à la main peut nécessiter une sélection et une formulation fixes qui ont été examinées ensemble. Dans cette situation, les blocs éditoriaux ordinaires peuvent être le meilleur choix.
Il existe également une limite de révision. Une révision de page conserve ses liaisons, ses paramètres et son repli éditorial ; il ne capture pas les enregistrements d'une source externe. La restauration d'une ancienne révision de page ne restaure pas les anciennes données du journal. Les processus de révision qui nécessitent un instantané fixe doivent en tenir compte dans le flux de travail source ou de publication.
Pour cette page, la limite est simple : l'éditeur est propriétaire de l'introduction et de la composition des cartes, et la source enregistrée est propriétaire des valeurs d'enregistrement. Décidez de cette limite champ par champ au lieu de traiter la page entière comme statique ou dynamique.
Quelles parties d'une page de contenu doivent suivre les données d'application et lesquelles doivent rester sous contrôle éditorial ?
Pour une présentation plus large des fonctionnalités, voir Connectez les blocs CMS aux données du plug-in dynamique. L'enregistrement de la source et les détails de l'API sont traités dans Content Sources and Block Field Bindings.