Prévisualiser le fragment de contenu
Les applications AEM Headless prennent en charge la prévisualisation de création intégrée. L’expérience de prévisualisation relie l’éditeur de fragment de contenu de l’instance de création d’AEM à votre application personnalisée (adressable via HTTP), ce qui permet d’insérer un lien profond dans l’application qui effectue le rendu du fragment de contenu en cours de prévisualisation.
Pour utiliser la prévisualisation du fragment de contenu, plusieurs conditions doivent être remplies :
- L’application doit être déployée vers une URL accessible aux auteurs et autrices.
- L’application doit être configurée pour se connecter au service de création AEM (plutôt qu’au service de publication AEM).
- L’application doit être conçue avec des URL ou des itinéraires pouvant utiliser un chemin ou un identifiant du fragment de contenu pour sélectionner les fragments de contenu à afficher en vue d’une prévisualisation dans l’expérience de l’application.
URL de prévisualisation
Les URL de prévisualisation, à l’aide des expressions d’URL, sont définies sur les propriétés du modèle de fragment de contenu.
- Connectez-vous au service de création AEM en tant qu’administrateur ou administratrice.
- Accédez à Outils > Général > Modèles de fragment de contenu.
- Sélectionnez le modèle de fragment de contenu et sélectionnez Propriétés dans la barre d’action supérieure.
- Saisissez l’URL de prévisualisation du modèle de fragment de contenu à l’aide des expressions d’URL.
- L’URL de prévisualisation doit pointer vers un déploiement de l’application qui se connecte au service de création AEM.
Expressions d’URL
Une URL de prévisualisation peut être définie pour chaque modèle de fragment de contenu. L’URL de prévisualisation peut être paramétrée par fragment de contenu à l’aide des expressions d’URL répertoriées dans le tableau ci-dessous. Plusieurs expressions d’URL peuvent être utilisées dans une seule URL de prévisualisation.
${contentFragment.path}
/content/dam/wknd-shared/en/adventures/surf-camp-bali/surf-camp-bali
${contentFragment.id}
12c34567-8901-2aa3-45b6-d7890aa1c23c
${contentFragment.variation}
main
${contentFragment.model.path}
/conf/wknd-shared/settings/dam/cfm/models/adventure
${contentFragment.model.name}
adventure
Exemples d’URL de prévisualisation :
- Une URL de prévisualisation sur le modèle Adventure pourrait ressembler à
https://preview.app.wknd.site/adventure${contentFragment.path}
qui se résout enhttps://preview.app.wknd.site/adventure/content/dam/wknd-shared/en/adventures/surf-camp-bali/surf-camp-bali
. - Une URL de prévisualisation sur le modèle Article pourrait ressembler à
https://preview.news.wknd.site/${contentFragment.model.name}/${contentFragment.id}.html?variation=${contentFragment.variation}
qui se résout enhttps://preview.news.wknd.site/article/99c34317-1901-2ab3-35b6-d7890aa1c23c.html?variation=main
.
Prévisualisation in-app
Tout fragment de contenu utilisant le modèle de fragment de contenu configuré comporte un bouton Prévisualisation. Le bouton Prévisualisation ouvre l’URL de prévisualisation du modèle de fragment de contenu et injecte les valeurs du fragment de contenu ouvert dans les expressions d’URL.
Effectuez une actualisation stricte (qui efface le cache local du navigateur) lors de la prévisualisation des modifications du fragment de contenu dans l’application.
Exemple pour React
Explorons l’application WKND, une application React simple qui présente les aventures d’AEM en utilisant des API GraphQL AEM Headless.
L’exemple de code est disponible sur Github.com.
URL et itinéraires
Les URL ou les itinéraires utilisés pour prévisualiser un fragment de contenu doivent pouvoir être composables à l’aide des expressions d’URL. Dans cette version avec prévisualisation de l’application WKND, les fragments de contenu d’aventure s’affichent via le composant AdventureDetail
lié à l’itinéraire /adventure<CONTENT FRAGMENT PATH>
. Par conséquent, l’URL de prévisualisation du modèle WKND Adventure doit être définie sur https://preview.app.wknd.site:3000/adventure${contentFragment.path}
pour résoudre cet itinéraire.
La prévisualisation de fragment de contenu ne fonctionne que si l’application dispose d’un itinéraire adressable pouvant être renseigné par des expressions d’URL qui effectuent le rendu de ce fragment de contenu dans l’application d’une manière prévisualisable.
src/App.js
...
function App() {
return (
<Router>
<div className="App">
<header>
<Link to={"/"}>
<img src={logo} className="logo" alt="WKND Logo"/>
</Link>
<hr />
</header>
<Routes>
{/* The route's path must match the Adventure Model's Preview URL expression. In React since the path has `/` you must use wildcards to match instead of the usual `:path` */}
<Route path='/adventure/*' element={<AdventureDetail />}/>
<Route path="/" element={<Home />}/>
</Routes>
</div>
</Router>
);
}
export default App;
Afficher le contenu créé
Le composant AdventureDetail
analyse simplement le chemin d’accès au fragment de contenu, injecté dans l’URL de prévisualisation via l’expression d’URL ${contentFragment.path}
, à partir de l’URL de l’itinéraire, et l’utilise pour collecter et effectuer le rendu de WKND Adventure.
src/components/AdventureDetail.js
...
function AdventureDetail() {
// Read the `path` value which is the parameter used to query for the adventure's details
// since the params value captures the `*` wildcard in `/adventure/*`, or everything after the first `/` in the Content Fragment path.
const params = useParams();
const pathParam = params["*"];
// Add the leading '/' back on
const path = '/' + pathParam;
// Query AEM for the Adventures's details, using the Content Fragment's `path`
const { adventure, references, error } = useAdventureByPath(path);
// Handle error and loading conditions
if (error) {
return <Error errorMessage={error} />;
} else if (!adventure) {
return <Loading />;
}
return (<div className="adventure-detail">
...
<AdventureDetailRender {...adventure} references={references} />
</div>);
}
...