Dans ce chapitre, nous autorisons deux itinéraires dynamiques Détails de l’aventure à prendre en charge les composants modifiables ; Bali Surf Camp et Beervana à Portland.
L’itinéraire SPA détails de l’aventure est défini comme /adventure:path
où path
est le chemin d’accès à l’aventure WKND (fragment de contenu) pour afficher des détails sur .
Dans les deux chapitres précédents, nous avons mappé le contenu du composant modifiable de la vue SPA accueil à la page racine de SPA distante correspondante dans l’AEM à /content/wknd-app/us/en/
.
La définition du mappage pour les composants modifiables pour les itinéraires dynamiques SPA est similaire. Toutefois, nous devons établir un schéma de mappage 1:1 entre les instances de l’itinéraire et les pages AEM.
Dans ce tutoriel, nous allons prendre le nom du fragment de contenu WKND Adventure, qui est le dernier segment du chemin, et le mapper à un chemin simple sous /content/wknd-app/us/en/adventure
.
Route de SPA distante | AEM chemin de page |
---|---|
/ | /content/wknd-app/us/en/home |
/aventure:/content/dam/wknd/fr/aventures/bali-surf-camp/bali-surf-camp | /content/wknd-app/us/fr/home/aventure/bali-surf-camp |
/aventure:/content/dam/wknd/fr/aventures/beervana-portland/beervana-portland | /content/wknd-app/us/en/home/aventure/beervana-in-portland |
Ainsi, en fonction de ce mappage, nous devons créer deux nouvelles pages AEM à l’adresse :
/content/wknd-app/us/en/home/adventure/bali-surf-camp
/content/wknd-app/us/en/home/adventure/beervana-in-portland
Le mappage des requêtes qui quittent la SPA distante est configuré via la configuration setupProxy
effectuée dans le Bootstrap SPA.
Le mappage pour les requêtes SPA lorsque le SPA est ouvert via l’éditeur d’ est configuré via la configuration des mappages Sling effectuée dans Configuration d’.
Créez tout d’abord le segment de page adventure
intermédiaire :
adventure
Créez ensuite les pages d’AEM qui correspondent à chacune des URL SPA nécessitant des zones modifiables.
bali-surf-camp
beervana-in-portland
Ces deux pages AEM contiennent le contenu créé correspondant à leurs itinéraires SPA correspondants. Si d’autres itinéraires SPA nécessitent la création, de nouvelles pages AEM doivent être créées à leur URL de base sous la page racine de la page de distante (/content/wknd-app/us/en/home
) dans.
Placons le composant <AEMResponsiveGrid...>
créé dans le dernier chapitre dans notre composant AdventureDetail
SPA, créant ainsi un conteneur modifiable.
Le placement de <AEMResponsiveGrid...>
dans le composant AdventureDetail
crée un conteneur modifiable dans cet itinéraire. L’astuce est que plusieurs itinéraires utilisent le composant AdventureDetail
pour le rendu. Nous devons ajuster dynamiquement l’attribut <AEMResponsiveGrid...>'s pagePath
. pagePath
doit être dérivé pour pointer vers la page d’AEM correspondante, en fonction de l’aventure affichée par l’instance de l’itinéraire.
Ouvrez et modifiez react-app/src/components/AdventureDetail.js
Ajoutez la ligne suivante avant la AdventureDetail(..)'s
seconde return(..)
instruction qui dérive le nom de l’aventure du chemin du fragment de contenu.
...
// Get the last segment of the Adventure Content Fragment path to used to generate the pagePath for the AEMResponsiveGrid
const adventureName = adventureData._path.split('/').pop();
...
Importez le composant AEMResponsiveGrid
et placez-le au-dessus du composant <h2>Itinerary</h2>
.
Définissez les attributs suivants sur le composant <AEMResponsiveGrid...>
pagePath = '/content/wknd-app/us/en/home/adventure/${adventureName}'
itemPath = 'root/responsivegrid'
Cela indique au composant AEMResponsiveGrid
de récupérer son contenu de la ressource AEM :
/content/wknd-app/us/en/home/adventure/${adventureName}/jcr:content/root/responsivegrid
Mettez à jour AdventureDetail.js
avec les lignes suivantes :
...
import AEMResponsiveGrid from '../components/aem/AEMResponsiveGrid';
...
function AdventureDetail(props) {
...
// Get the last segment of the Adventure Content Fragment path to used to generate the pagePath for the AEMResponsiveGrid
const adventureName = adventureData._path.split('/').pop();
return(
...
<AEMResponsiveGrid
pagePath={`/content/wknd-app/us/en/home/adventure/${adventureName}`}
itemPath="root/responsivegrid"/>
<h2>Itinerary</h2>
...
)
}
Le fichier AdventureDetail.js
doit se présenter comme suit :
Avec la balise <AEMResponsiveGrid...>
en place et sa balise pagePath
dynamiquement définie en fonction du rendu de l’aventure, nous essayons de créer du contenu dans celle-ci.
Connexion à l’auteur AEM
Accédez à Sites > Application WKND > us > en
____ Modification de la page d’accueil de l’application WKND
Sélectionnez Aperçu dans le sélecteur de mode en haut à droite.
Appuyez sur la carte Bali Surf Camp dans le SPA pour accéder à son itinéraire.
Sélectionnez Modifier dans le sélecteur de mode.
Recherchez la zone modifiable Conteneur de mises en page juste au-dessus de la Itinéraire
Ouvrez la barre latérale de l’éditeur de page, puis sélectionnez la vue Composants.
Faites glisser certains des composants activés dans le conteneur de mises en page
Et créer du matériel marketing promotionnel. Cela pourrait ressembler à ceci :
____ Aperçu des modifications dans AEM éditeur de page
Actualisez l’application WKND s’exécutant localement sur http://localhost:3000, accédez à l’itinéraire Bali Surf Camp pour afficher les modifications créées.
Lorsque vous accédez à un itinéraire de détails d’aventure qui ne comporte pas de page d’AEM mappée, il n’y a aucune fonctionnalité de création sur cette instance d’itinéraire. Pour activer la création sur ces pages, il vous suffit de créer une page AEM avec le nom correspondant sous la page Adventure .
Félicitations ! Vous avez ajouté la capacité de création aux itinéraires dynamiques dans la SPA !
Vous avez maintenant terminé d’explorer les premières étapes de la manière dont AEM Éditeur SPA peut être utilisé pour ajouter des zones modifiables spécifiques à un distant !
Restez à l'écoute ! Ce tutoriel sera développé afin de présenter les bonnes pratiques et les recommandations de l’Adobe sur le déploiement de la solution SPA Editor vers AEM as a Cloud Service et les environnements de production.