Panoramica di Universal Editor per sviluppatori AEM developer-overview
Se sei uno sviluppatore AEM interessato al funzionamento di Universal Editor e a come utilizzarlo nel progetto, questo documento offre un’introduzione end-to-end che ti guida attraverso la strumentazione del progetto WKND per lavorare con Universal Editor.
Scopo purpose
Questo documento fornisce un’introduzione per gli sviluppatori sia sulle modalità di funzionamento dell’Editor universale che su come dotare l’applicazione di strumenti per utilizzarla.
A tal fine, prende un esempio standard che la maggior parte degli sviluppatori AEM conosce, i Componenti core e il sito WKND e strumenta alcuni componenti di esempio da modificare utilizzando l’editor universale.
Prerequisiti prerequisites
Per seguire questa panoramica, è necessario disporre dei seguenti elementi.
-
Un'istanza di sviluppo locale di AEM as a Cloud Service
- L'istanza di sviluppo locale deve essere configurata con HTTPS a scopo di sviluppo il
localhost
. - È necessario installare il sito di dimostrazione WKND.
- L'istanza di sviluppo locale deve essere configurata con HTTPS a scopo di sviluppo il
-
Un servizio Universal Editor locale in esecuzione per scopi di sviluppo
- Accertati di indirizzare il browser a accettare il certificato autofirmato dei servizi locali.
Al di là della generale familiarità con lo sviluppo web, questo documento presuppone una conoscenza di base con lo sviluppo dell’AEM. Se non hai esperienza con lo sviluppo di AEM, valuta di rivedere l'esercitazione WKND prima di continuare.
Avviare l’AEM e accedere all’editor universale sign-in
Se non lo hai già fatto, devi avere la tua istanza di sviluppo AEM locale in esecuzione con WKND installato e HTTPS abilitato come descritto nei prerequisiti. Questa panoramica presuppone che l'istanza sia in esecuzione alle https://localhost:8443
.
-
Apri la pagina mastro principale in lingua inglese WKND nell’editor AEM.
code language-text https://localhost:8443/editor.html/content/wknd/language-masters/en.html
-
Nel menu Informazioni pagina dell'editor, seleziona Visualizza come pubblicato. Viene aperta la stessa pagina in una nuova scheda con l’editor AEM disabilitato.
code language-text https://localhost:8443/content/wknd/language-masters/en.html?wcmmode=disabled
-
Copia questo collegamento.
-
Ora accedi a Universal Editor.
code language-text https://experience.adobe.com/#/aem/editor
-
Incolla il collegamento copiato in precedenza del contenuto WKND nel campo URL sito di Universal Editor e fai clic su Apri.
L’editor universale tenta di caricare il contenuto sameorigin
Universal Editor carica il contenuto da modificare in un frame. Le impostazioni predefinite dell’AEM per le opzioni X-Frame lo impediscono, il che può essere chiaramente visto nel browser come un errore e descritto nell’output della console quando si tenta di caricare la copia locale di WKND.
L'opzione X-Frame sameorigin
impedisce il rendering delle pagine AEM all'interno di un frame. È necessario rimuovere questa intestazione per consentire il caricamento delle pagine nell’Editor universale.
-
Apri Configuration Manager.
code language-text https://localhost:8443/system/console/configMgr
-
Modifica la configurazione OSGi
org.apache.sling.engine.impl.SlingMainServlet
-
Elimina la proprietà
X-Frame-Options=SAMEORIGIN
della proprietà Altre intestazioni di risposta. -
Salva le modifiche.
Ora, se ricarichi l’editor universale, vedrai che la pagina AEM si carica.
- Per ulteriori informazioni su questa configurazione OSGi, consulta il documento Guida introduttiva all'editor universale in AEM.
- Per informazioni dettagliate su OSGi nell'AEM, consulta il documento Configurazione di OSGi per Adobe Experience Manager as a Cloud Service.
Gestione dei cookie dello stesso sito samesite-cookies
Quando Universal Editor carica la pagina, questa viene caricata nella pagina di accesso AEM per garantire che l'utente sia autenticato per apportare modifiche.
Tuttavia, non puoi accedere correttamente. Visualizzando la console del browser, potete notare che il browser ha bloccato l'input sul frame
Il cookie del token di accesso viene inviato a AEM come dominio di terze parti. Pertanto, i cookie dello stesso sito devono essere consentiti nell’AEM.
-
Apri Configuration Manager.
code language-text https://localhost:8443/system/console/configMgr
-
Modifica la configurazione OSGi
com.day.crx.security.token.impl.impl.TokenAuthenticationHandler
-
Modificare la proprietà Attributo SameSite per il cookie token di accesso in
None
. -
Salva le modifiche.
Ora, se ricarichi l’Editor universale, potrai accedere all’AEM e caricare la pagina di destinazione.
- Per ulteriori informazioni su questa configurazione OSGi, consulta il documento Guida introduttiva all'editor universale in AEM.
- Per informazioni dettagliate su OSGi nell'AEM, consulta il documento Configurazione di OSGi per Adobe Experience Manager as a Cloud Service.
Universal Editor si connette al frame remoto ue-connect-remote-frame
Dopo aver caricato la pagina nell'editor universale e aver effettuato l'accesso a AEM, l'editor universale tenta di connettersi al frame remoto. Questa operazione viene eseguita tramite una libreria JavaScript che deve essere caricata nel frame remoto. Se la libreria JavaScript non è presente, nella pagina viene generato un errore di timeout nella console.
Devi aggiungere la libreria JavaScript necessaria al componente pagina dell’app WKND.
-
Apri CRXDE Lite.
code language-text https://localhost:8443/crx/de
-
In
/apps/wknd/components/page
, modificare il filecustomheaderlibs.html
. -
Aggiungi la libreria JavaScript alla fine del file.
code language-html <script src="https://universal-editor-service.experiencecloud.live/corslib/LATEST"></script>
-
Fare clic su Salva tutto e quindi ricaricare l'editor universale.
La pagina ora viene caricata con la libreria JavaScript appropriata per consentire all’editor universale di connettersi alla pagina e l’errore di timeout non viene più visualizzato nella console.
- La libreria può essere caricata nell’intestazione o nel piè di pagina.
- La libreria di
universal-editor-embedded.js
è disponibile in NPM e puoi ospitarla autonomamente se necessario o inserirla direttamente nell'applicazione.
Definizione di una connessione per rendere le modifiche permanenti connection
La pagina WKND ora viene caricata correttamente nell’editor universale e la libreria JavaScript viene caricata per collegare l’editor all’app.
Tuttavia, probabilmente hai notato che non puoi interagire con la pagina nell’Editor universale. Editor universale non può modificare la pagina. Affinché l’editor universale possa modificare il contenuto, è necessario definire una connessione in modo che sappia dove scriverlo. Per lo sviluppo locale, è necessario riscrivere nell'istanza di sviluppo AEM locale in https://localhost:8443
.
-
Apri CRXDE Lite.
code language-text https://localhost:8443/crx/de
-
In
/apps/wknd/components/page
, modificare il filecustomheaderlibs.html
. -
Aggiungi alla fine del file i metadati necessari per la connessione all’istanza AEM locale.
code language-html <meta name="urn:adobe:aue:system:aem" content="aem:https://localhost:8443">
- Si consiglia sempre di utilizzare la versione più recente della libreria. Se hai bisogno di una versione precedente, consulta il documento Guida introduttiva all'editor universale in AEM.
-
Aggiungere alla fine del file i metadati necessari per la connessione al servizio Universal Editor locale.
code language-html <meta name="urn:adobe:aue:config:service" content="https://localhost:8000">
-
Fare clic su Salva tutto e quindi ricaricare l'editor universale.
Ora Universal Editor non solo può caricare correttamente il contenuto dall’istanza di sviluppo AEM locale, ma sa anche dove mantenere eventuali modifiche apportate utilizzando il servizio Universal Editor locale. Questo è il primo passaggio per rendere l’app modificabile con l’Editor universale.
- Per ulteriori informazioni sui metadati della connessione, vedere il documento Guida introduttiva all'editor universale in AEM.
- Per ulteriori informazioni sulla struttura dell'editor universale, vedere il documento Architettura dell'editor universale.
- Per ulteriori informazioni su come connettersi a una versione self-hosted di Universal Editor, vedere il documento Sviluppo locale AEM con Universal Editor.
Strumentazione dei componenti instrumenting-components
Tuttavia, probabilmente noterai che è ancora possibile fare poco con l’Editor universale. Se tenti di fare clic sul teaser nella parte superiore della pagina WKND nell’Universal Editor, non puoi selezionarlo (o altro sulla pagina).
I componenti devono inoltre essere dotati di strumenti per poter essere modificati con l’Editor universale. A questo scopo, devi modificare il componente teaser. Pertanto, è necessario sovrapporre i Componenti core poiché questi si trovano in /libs
, che è immutabile.
-
Apri CRXDE Lite.
code language-text https://localhost:8443/crx/de
-
Selezionare il nodo
/libs/core/wcm/components
e fare clic su Sovrapponi nodo sulla barra degli strumenti. -
Con
/apps/
selezionato come Posizione sovrapposizione, fai clic su OK. -
Seleziona il nodo
teaser
in/libs/core/wcm/components
e fai clic su Copia nella barra degli strumenti. -
Seleziona il nodo sovrapposto in
/apps/core/wcm/components
e fai clic su Incolla nella barra degli strumenti. -
Fare doppio clic sul file
/apps/core/wcm/components/teaser/v2/teaser/teaser.html
per modificarlo. -
Alla fine del primo
div
, approssimativamente alla riga 26, aggiungere i dettagli della strumentazione per il componente.code language-text data-aue-resource="urn:aem:${resource.path}" data-aue-type="component" data-aue-label="Teaser"
-
Fare clic su Salva tutto nella barra degli strumenti e ricaricare l'editor universale.
-
Nell’Editor universale, fai clic sul componente teaser nella parte superiore della pagina per verificare che ora sia possibile selezionarlo.
-
Se si fa clic sull'icona Struttura contenuto nel pannello delle proprietà di Universal Editor, è possibile vedere che l'editor ha riconosciuto tutti i teaser sulla pagina dopo averla dotata di strumenti. Il teaser selezionato è quello evidenziato.
Sottocomponenti strumento del teaser subcomponents
Ora puoi selezionare il teaser, ma non modificarlo. Questo perché il teaser è un composito di diversi componenti come il componente Immagine e Titolo. Devi instrumentare questi sottocomponenti per modificarli.
-
Apri CRXDE Lite.
code language-text https://localhost:8443/crx/de
-
Selezionare il nodo
/apps/core/wcm/components/teaser/v2/teaser/
e fare doppio clic sul filetitle.html
. -
Inserire le seguenti proprietà alla fine del tag
h2
(vicino alla riga 17).code language-text data-aue-prop="jcr:title" data-aue-type="text" data-aue-label="Title"
-
Fare clic su Salva tutto nella barra degli strumenti e ricaricare l'editor universale.
-
Fai clic sul titolo dello stesso componente teaser nella parte superiore della pagina per verificare che ora sia possibile selezionarlo. La struttura del contenuto mostra anche il titolo come parte del componente teaser selezionato.
Ora puoi modificare il titolo del componente teaser.
Cosa significa tutto questo? what-does-it-mean
Ora che puoi modificare il titolo del teaser, soffermiamoci a esaminare cosa hai realizzato e come.
Il componente teaser è stato identificato nell’editor universale strumentandolo.
data-aue-resource
identifica la risorsa in AEM che viene modificata.data-aue-type
definisce che gli elementi devono essere trattati come un componente pagina (anziché, ad esempio, come un contenitore).data-aue-label
visualizza un'etichetta intuitiva nell'interfaccia utente per il teaser selezionato.
Hai anche instrumentato il componente titolo all’interno del componente teaser.
data-aue-prop
è l'attributo JCR scritto.data-aue-type
è il modo in cui l'attributo deve essere modificato. In questo caso, con l’editor di testo, poiché è un titolo (anziché l’editor Rich Text).
Definizione delle intestazioni di autenticazione auth-header
Ora puoi modificare il titolo del teaser in linea e le modifiche vengono mantenute nel browser.
Tuttavia, se ricarichi il browser, il titolo precedente viene ricaricato. Questo perché, anche se l’editor universale sa come connettersi all’istanza AEM, non può ancora autenticarsi nell’istanza AEM per riscrivere le modifiche in JCR.
Se si visualizza la scheda di rete degli strumenti di sviluppo del browser e si cerca update
, è possibile notare che si verifica un errore 401 quando si tenta di modificare il titolo.
Quando si utilizza l’editor universale per modificare il contenuto dell’AEM di produzione, l’editor universale utilizza lo stesso token IMS utilizzato per accedere all’editor e autenticarsi nell’AEM per facilitare la riscrittura in JCR.
Quando si sviluppa localmente, non è possibile utilizzare il provider di identità AEM poiché i token IMS vengono passati solo ai domini di proprietà di Adobe. Devi fornire manualmente un modo per eseguire l’autenticazione impostando esplicitamente un’intestazione di autenticazione.
-
Nell'interfaccia di Universal Editor, fare clic sull'icona Intestazioni di autenticazione nella barra degli strumenti.
-
Copia nell'intestazione di autenticazione necessaria per autenticarti nell'istanza AEM locale e fai clic su Salva.
-
Ricarica l’Editor universale e ora modifica il titolo del teaser.
Non vengono più segnalati errori nella console del browser e le modifiche vengono mantenute nell’istanza di sviluppo AEM locale.
Se analizzi il traffico negli strumenti di sviluppo del browser e cerchi gli eventi update
, puoi visualizzare i dettagli dell'aggiornamento.
{
"connections": [
{
"name": "aem",
"protocol": "aem",
"uri": "https://localhost:8443"
}
],
"target": {
"resource": "urn:aem:/content/wknd/language-masters/en/jcr:content/root/container/carousel/item_1571954853062",
"type": "text",
"prop": "jcr:title"
},
"value": "Tiny Toon Adventures"
}
connections
è la connessione all'istanza AEM localetarget
è il nodo esatto e le proprietà aggiornate nel JCRvalue
è l'aggiornamento che hai effettuato.
Puoi vedere la modifica persistente in JCR.
Basic YWRtaW46YWRtaW4=
è per la combinazione utente/password di admin:admin
, come è comune per lo sviluppo AEM locale.Strumentazione dell’app per il pannello Proprietà properties-rail
Ora disponi di un’app dotata di strumenti per essere modificabile tramite l’Editor universale.
La modifica è attualmente limitata alla modifica in linea del titolo del teaser. Tuttavia, in alcuni casi la modifica diretta non è sufficiente. Il testo, come il titolo del teaser, può essere modificato nella posizione in cui si trova con l’input della tastiera. Tuttavia, gli elementi più complicati devono poter essere visualizzati e consentire la modifica di dati strutturati separati da come vengono riprodotti nel browser. A questo serve il pannello delle proprietà.
Per aggiornare l’app in modo da utilizzare il pannello delle proprietà per la modifica, torna al file di intestazione del componente Pagina dell’app. Qui sono già state stabilite le connessioni all'istanza di sviluppo AEM locale e al servizio Universal Editor locale. Qui devi definire i componenti modificabili nell’app e i relativi modelli di dati.
-
Apri CRXDE Lite.
code language-text https://localhost:8443/crx/de
-
In
/apps/wknd/components/page
, modificare il filecustomheaderlibs.html
. -
Alla fine del file aggiungi lo script necessario per definire i componenti.
code language-html <script type="application/vnd.adobe.aue.component+json"> { "groups": [ { "title": "General Components", "id": "general", "components": [ { "title": "Teaser", "id": "teaser", "plugins": { "aem": { "page": { "resourceType": "wknd/components/teaser" } } } }, { "title": "Title", "id": "title", "plugins": { "aem": { "page": { "resourceType": "wknd/components/title" } } } } ] } ] } </script>
-
Sotto, alla fine del file aggiungete lo script necessario per definire il modello.
code language-html <script type="application/vnd.adobe.aue.model+json"> [ { "id": "teaser", "fields": [ { "component": "text-input", "name": "jcr:title", "label": "Title", "valueType": "string" }, { "component": "text-area", "name": "jcr:description", "label": "Description", "valueType": "string" } ] }, { "id": "title", "fields": [ { "component": "select", "name": "type", "value": "h1", "label": "Type", "valueType": "string", "options": [ { "name": "h1", "value": "h1" }, { "name": "h2", "value": "h2" }, { "name": "h3", "value": "h3" }, { "name": "h4", "value": "h4" }, { "name": "h5", "value": "h5" }, { "name": "h6", "value": "h6" } ] } ] } ] </script>
-
Fare clic su Salva tutto nella barra degli strumenti.
Cosa significa tutto questo? what-does-it-mean-2
Per poter essere modificati tramite il pannello delle proprietà, i componenti devono essere assegnati a groups
, pertanto ogni definizione inizia come un elenco di gruppi contenenti i componenti.
title
è il nome del gruppo.id
è l'identificatore univoco del gruppo, in questo caso i componenti generali che compongono il contenuto della pagina, ad esempio i componenti avanzati per il layout di pagina.
Ogni gruppo ha quindi una matrice di components
.
title
è il nome del componente.id
è l'identificatore univoco del componente, in questo caso un teaser.
Ogni componente ha quindi una definizione del plug-in che definisce come il componente viene mappato all’AEM.
aem
è il plug-in che gestisce le modifiche. Può essere considerato come il servizio che elabora il componente.page
definisce il tipo di componente, in questo caso un componente pagina standard.resourceType
è la mappatura del componente AEM effettivo.
Ogni componente deve quindi essere mappato a un model
per definire i singoli campi modificabili.
id
è l'identificatore univoco del modello, che deve corrispondere all'ID del componente.fields
è un array dei singoli campi.component
è il tipo di input, ad esempio area di testo o testo.name
è il nome del campo nel JCR a cui è mappato il campo.label
è la descrizione del campo visualizzato nell'interfaccia utente dell'editor.valueType
è il tipo di dati.
Strumentazione del componente per il pannello Proprietà properties-rail-component
È inoltre necessario definire a livello di componente quale modello utilizzare.
-
Apri CRXDE Lite.
code language-text https://localhost:8443/crx/de
-
Fare doppio clic sul file
/apps/core/wcm/components/teaser/v2/teaser/teaser.html
per modificarlo. -
Alla fine del primo
div
, approssimativamente alla riga 32, dopo le proprietà aggiunte in precedenza, aggiungi i dettagli della strumentazione per il modello che verrà utilizzato dal componente teaser.code language-text data-aue-model="teaser"
-
Fare clic su Salva tutto nella barra degli strumenti e ricaricare l'editor universale.
Ora puoi testare il pannello delle proprietà dotato di strumenti per il componente.
-
Nell’Editor universale, fai clic sul titolo del teaser per modificarlo ancora una volta.
-
Fai clic sul pannello delle proprietà per visualizzare la scheda delle proprietà e visualizzare i campi appena instrumentati.
Ora puoi modificare il titolo del teaser in linea come in precedenza o nel pannello delle proprietà. In entrambi i casi, le modifiche vengono mantenute nell’istanza di sviluppo AEM locale.
Aggiungi campi aggiuntivi al pannello Proprietà add-fields
Utilizzando la struttura di base del modello dati per il componente già implementato, puoi aggiungere campi aggiuntivi seguendo lo stesso modello.
Ad esempio, puoi aggiungere un campo per regolare lo stile del componente.
-
Apri CRXDE Lite.
code language-text https://localhost:8443/crx/de
-
In
/apps/wknd/components/page
, modificare il filecustomheaderlibs.html
. -
Nello script di definizione del modello, aggiungere un elemento aggiuntivo all'array
fields
per il campo di stile. Ricordati di aggiungere una virgola dopo l’ultimo campo prima di inserirne uno nuovo.code language-json { "component": "select", "name": "cq:styleIds", "label": "Style", "valueType": "string", "multi": true, "options": [ {"name": "hero", "value":"1555543212672"}, {"name": "card", "value":"1605057868937"} ] }
-
Fare clic su Salva tutto nella barra degli strumenti e ricaricare l'editor universale.
-
Fai clic sul titolo del teaser per modificarlo ancora una volta.
-
Fai clic sul pannello delle proprietà e osserva che è presente un nuovo campo per regolare lo stile del componente.
Qualsiasi campo nel JCR del componente può essere esposto in questo modo nell’Editor universale.
Riepilogo summary
Congratulazioni Ora puoi personalizzare le tue app per l’AEM in modo che funzionino con l’Editor universale.
Quando inizi a dotare la tua app di strumenti, tieni presente i passaggi di base eseguiti in questo esempio.
-
Puoi configurare l’ambiente di sviluppo.
- AEM in esecuzione in locale su HTTPS con WKND installato
- Servizio Universal Editor in esecuzione in locale su HTTPS
-
Hai aggiornato le impostazioni OSGi dell’AEM per consentirne il caricamento remoto del contenuto.
-
Hai definito una connessione per rendere persistenti le modifiche in
- È stata definita una connessione all’istanza di sviluppo AEM locale.
- È stata inoltre definita una connessione al servizio Universal Editor locale.
-
Hai instrumentato l’app per utilizzare il pannello delle proprietà.
-
Hai instrumentato il componente teaser per utilizzare il pannello delle proprietà.
Puoi seguire questi stessi passaggi per dotare la tua app di strumenti per l’utilizzo con l’Editor universale. Tutte le proprietà nel JCR possono essere esposte all’Editor universale.
Risorse aggiuntive additional-resources
Per ulteriori informazioni e dettagli sulle funzioni di Universal Editor, consulta i seguenti documenti.
- Per iniziare a utilizzare il sistema il più rapidamente possibile, vedere la Guida introduttiva all'editor universale nel documento AEM.
- Per ulteriori informazioni sulle configurazioni OSGi necessarie, consulta il documento Guida introduttiva all'editor universale in AEM.
- Per ulteriori informazioni sui metadati della connessione, vedere il documento Guida introduttiva all'editor universale in AEM.
- Per ulteriori informazioni sulla struttura dell'editor universale, vedere il documento Architettura dell'editor universale.
- Per ulteriori informazioni su come connettersi a una versione self-hosted di Universal Editor, vedere il documento Sviluppo locale AEM con Universal Editor.
- Per ulteriori dettagli sui nodi sovrapposti, consulta il documento Utilizzo di Sling Resource Merger in Adobe Experience Manager as a Cloud Service.