In questo capitolo verrà esplorata la relazione tra un componente della pagina di base e modelli modificabili. Verrà creato un modello di articolo non formattato basato su alcuni modelli di AdobeXD. Durante il processo di creazione del modello, sono trattati i componenti core e le configurazioni avanzate dei modelli modificabili.
Rivedere gli strumenti e le istruzioni necessari per la configurazione di un ambiente di sviluppo locale.
Se hai completato con successo il capitolo precedente, puoi riutilizzare il progetto e saltare i passaggi per il check-out del progetto iniziale.
Controlla il codice della riga di base su cui si basa l'esercitazione:
Consulta la sezione tutorial/pages-templates-start
ramo GitHub
$ cd ~/code/aem-guides-wknd
$ git checkout tutorial/pages-templates-start
Distribuisci la base di codice in un'istanza AEM locale utilizzando le tue competenze Maven:
$ mvn clean install -PautoInstallSinglePackage
Se utilizzi AEM 6.5 o 6.4, aggiungi la variabile classic
su qualsiasi comando Maven.
$ mvn clean install -PautoInstallSinglePackage -Pclassic
Puoi sempre visualizzare il codice finito su GitHub o controlla il codice localmente passando al ramo tutorial/pages-templates-solution
.
In questa parte dell’esercitazione verrà creato un nuovo modello Pagina articolo che può essere utilizzato per creare nuove pagine di articoli e allinearsi a una struttura comune. Il modello Pagina articolo sarà basato sulle progettazioni e su un kit di interfaccia utente prodotto in AdobeXD. Questo capitolo si concentra solo sulla costruzione della struttura o dello scheletro del modello. Non verrà implementato alcun stile, ma il modello e le pagine funzioneranno.
Nella maggior parte dei casi, la pianificazione di un nuovo sito web inizia con modelli e progetti statici. Adobe XD è uno strumento di progettazione che crea esperienze utente. Ora esamineremo un kit di interfaccia utente e i modelli per pianificare la struttura del modello di pagina dell’articolo.
Scarica la File di progettazione di articoli WKND.
Un generico È disponibile anche AEM kit per l’interfaccia utente dei componenti core come punto di partenza per i progetti personalizzati.
Quando si crea una pagina, è necessario selezionare un modello da utilizzare come base per la creazione della nuova pagina. Il modello definisce la struttura della pagina risultante, il contenuto iniziale e i componenti consentiti.
Ci sono 3 aree principali di Modelli modificabili:
Quindi, crea un nuovo modello in AEM che corrisponda alla struttura dei modelli. Questo si verificherà in un'istanza locale di AEM. Segui i passaggi del video seguente:
Passaggi di alto livello per il video seguente:
/content/experience-fragments/wknd/us/en/site/header/master
.header
. La header
nel capitolo successivo verrà eseguito il targeting con CSS./content/experience-fragments/wknd/us/en/site/footer/master
.footer
. La footer
nel capitolo successivo verrà eseguito il targeting con CSS.main
. La main
nel capitolo successivo verrà eseguito il targeting con CSS.H4
.H5
.Per visualizzare il modello nella console Modelli , vai a http://localhost:4502/libs/wcm/core/content/sites/templates.html/conf/wknd
Abilita il modello Pagina articolo .
Modifica le proprietà del modello Pagina articolo e carica la seguente miniatura per identificare rapidamente le pagine create utilizzando il modello Pagina articolo :
Una pratica comune nella creazione di contenuto globale, ad esempio intestazione o piè di pagina, consiste nell’utilizzare un’ Frammento esperienza. Frammenti esperienza consente agli utenti di combinare più componenti per creare un singolo componente utilizzabile come riferimento. I frammenti esperienza hanno il vantaggio di supportare la gestione multisito e localizzazione.
L’Archetipo di progetto AEM ha generato un’intestazione e un piè di pagina. Quindi, aggiorna i frammenti esperienza in modo che corrispondano ai pattern. Segui i passaggi del video seguente:
Passaggi di alto livello per il video seguente:
/content/wknd/us/en
la home page./content/wknd/us/en
la home page.Quindi, crea una nuova pagina utilizzando il modello Pagina articolo . Crea il contenuto della pagina in modo che corrisponda ai modelli di sito. Segui i passaggi del video seguente:
Passaggi di alto livello per il video seguente:
/content/wknd/us/en/magazine
.A questo punto la pagina dell'articolo è chiaramente senza stile. Tuttavia, la struttura di base è in atto. Quindi, controlla la struttura del nodo della pagina dell’articolo per acquisire una migliore comprensione del ruolo del modello, della pagina e dei componenti.
Utilizza lo strumento CRXDE-Lite su un'istanza AEM locale per visualizzare la struttura del nodo sottostante.
Apri CRXDE-Lite e utilizza la navigazione ad albero per navigare /content/wknd/us/en/magazine/guide-la-skateparks
.
Fai clic sul pulsante jcr:content
sotto il nodo la-skateparks
e visualizza le proprietà:
Osserva il valore per cq:template
, che indica /conf/wknd/settings/wcm/templates/article-page
, Modello pagina articolo creato in precedenza.
Osserva anche il valore di sling:resourceType
, che indica wknd/components/page
. Si tratta del componente pagina creato dall’archetipo di progetto AEM ed è responsabile del rendering della pagina in base al modello.
Espandi la jcr:content
nodo sotto /content/wknd/us/en/magazine/guide-la-skateparks/jcr:content
e visualizza la gerarchia dei nodi:
Dovresti essere in grado di mappare liberamente ciascuno dei nodi ai componenti creati. Vedi se puoi identificare i diversi Contenitori di layout utilizzati dall’ispezione dei nodi con prefisso container
.
Successivamente, controlla il componente della pagina in /apps/wknd/components/page
. Visualizza le proprietà del componente in CRXDE Lite:
Si noti che esistono solo 2 script HTL, customfooterlibs.html
e customheaderlibs.html
sotto il componente pagina. Quindi, in che modo questo componente esegue il rendering della pagina?
La sling:resourceSuperType
fa riferimento a core/wcm/components/page/v2/page
. Questa proprietà consente al componente pagina di WKND di ereditare tutto della funzionalità del componente della pagina Componenti core. Questo è il primo esempio di una cosa chiamata Pattern componente proxy. Ulteriori informazioni sono disponibili qui..
Un altro componente all’interno dei componenti WKND, il Breadcrumb
componente situato in: /apps/wknd/components/breadcrumb
. Notate che lo stesso sling:resourceSuperType
è possibile trovare la proprietà , ma questa volta fa riferimento a core/wcm/components/breadcrumb/v2/breadcrumb
. Questo è un altro esempio di utilizzo del pattern del componente Proxy per includere un componente core. Infatti, tutti i componenti della base di codice WKND sono proxy dei componenti core AEM (ad eccezione del nostro famoso componente HelloWorld). È consigliabile provare e riutilizzare il più possibile la funzionalità dei componenti core prima scrittura di codice personalizzato.
Quindi controlla la pagina del componente core in /libs/core/wcm/components/page/v2/page
con CRXDE Lite:
In AEM 6.5/6.4, i componenti core si trovano in /apps/core/wcm/components
. In AEM as a Cloud Service, i componenti core si trovano in /libs
e vengono aggiornati automaticamente.
Molti altri script sono inclusi in questa pagina. La pagina dei componenti core contiene molte funzionalità. Questa funzionalità è suddivisa in più script per facilitarne la manutenzione e la leggibilità. Puoi tracciare l’inclusione degli script HTL aprendo la page.html
e alla ricerca data-sly-include
:
<!--/* /libs/core/wcm/components/page/v2/page/page.html */-->
<!DOCTYPE HTML>
<html data-sly-use.page="com.adobe.cq.wcm.core.components.models.Page" lang="${page.language}"
data-sly-use.head="head.html"
data-sly-use.footer="footer.html"
data-sly-use.redirect="redirect.html">
<head data-sly-call="${head.head @ page = page}"></head>
<body class="${page.cssClassNames}"
id="${page.id}"
data-cmp-data-layer-enabled="${page.data ? true : false}">
<script data-sly-test.dataLayerEnabled="${page.data}">
window.adobeDataLayer = window.adobeDataLayer || [];
adobeDataLayer.push({
page: JSON.parse("${page.data.json @ context='scriptString'}"),
event:'cmp:show',
eventInfo: {
path: 'page.${page.id @ context="scriptString"}'
}
});
</script>
<sly data-sly-test.isRedirectPage="${page.redirectTarget && (wcmmode.edit || wcmmode.preview)}"
data-sly-call="${redirect.redirect @ redirectTarget = page.redirectTarget}"></sly>
<sly data-sly-test="${!isRedirectPage}">
<sly data-sly-include="body.skiptomaincontent.html"></sly>
<sly data-sly-include="body.socialmedia_begin.html"></sly>
<sly data-sly-include="body.html"></sly>
<sly data-sly-call="${footer.footer @ page = page}"></sly>
<sly data-sly-include="body.socialmedia_end.html"></sly>
</sly>
</body>
</html>
L’altro motivo per suddividere l’HTL in più script è consentire ai componenti proxy di sostituire i singoli script per implementare una logica di business personalizzata. Gli script HTL, customfooterlibs.html
e customheaderlibs.html
, sono creati per lo scopo esplicito di essere sostituiti dall’implementazione di progetti.
Per ulteriori informazioni sui fattori del modello modificabile nel rendering del pagina del contenuto leggendo questo articolo.
Inspect è l’altro componente core, come la Breadcrumb in /libs/core/wcm/components/breadcrumb/v2/breadcrumb
. Visualizza la breadcrumb.html
script per comprendere in che modo viene generato il markup per il componente Breadcrumb.
In molti casi, specialmente all’inizio di un progetto AEM, è utile mantenere le configurazioni, come i modelli e i relativi criteri dei contenuti, al controllo del codice sorgente. In questo modo tutti gli sviluppatori lavorano con lo stesso set di contenuti e configurazioni e possono garantire un’ulteriore coerenza tra gli ambienti. Quando un progetto raggiunge un certo livello di maturità, la gestione dei modelli può essere affidata a un gruppo speciale di utenti.
Per il momento i modelli verranno trattati come altri pezzi di codice e sincronizzeremo il Modello pagina articolo nell'ambito del progetto. Finora abbiamo spinto dal nostro progetto AEM a un'istanza locale di AEM. La Modello pagina articolo è stato creato direttamente su un'istanza locale di AEM, quindi dobbiamo importare il modello nel nostro progetto AEM. La ui.content Il modulo è incluso nel progetto AEM per questo scopo specifico.
I passaggi successivi si svolgeranno utilizzando l’IDE VSCode utilizzando Sincronizzazione AEM VSCode plug-in, ma potrebbe utilizzare qualsiasi IDE configurato per importare o importa contenuto da un’istanza locale di AEM.
In VSCode apri la aem-guides-wknd
progetto.
Espandi la ui.content in Project explorer. Espandi la src
e passa a /conf/wknd/settings/wcm/templates
.
Clic con il pulsante destro la templates
e seleziona Importa da AEM server:
La article-page
devono essere importati e page-content
, xf-web-variation
È inoltre necessario aggiornare i modelli.
Ripeti i passaggi per importare il contenuto, ma seleziona la politiche cartella situata in /conf/wknd/settings/wcm/policies
.
Inspect filter.xml
file situato in ui.content/src/main/content/META-INF/vault/filter.xml
.
<!--ui.content filter.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/conf/wknd" mode="merge"/>
<filter root="/content/wknd" mode="merge"/>
<filter root="/content/dam/wknd" mode="merge"/>
<filter root="/content/experience-fragments/wknd" mode="merge"/>
</workspaceFilter>
La filter.xml
Il file è responsabile dell’identificazione dei percorsi dei nodi che verranno installati con il pacchetto. Osserva che mode="merge"
in ciascuno dei filtri che indica che il contenuto esistente non verrà modificato, viene aggiunto solo un nuovo contenuto. Poiché gli autori dei contenuti possono aggiornare questi percorsi, è importante che la distribuzione del codice lo faccia not sovrascrivi il contenuto. Consulta la sezione Documentazione FileVault per ulteriori informazioni sull’utilizzo degli elementi filtro.
Confronto ui.content/src/main/content/META-INF/vault/filter.xml
e ui.apps/src/main/content/META-INF/vault/filter.xml
per comprendere i diversi nodi gestiti da ciascun modulo.
Per garantire distribuzioni coerenti per il sito WKND Reference, alcuni rami del progetto sono configurati in modo che ui.content
sovrascriverà eventuali modifiche nel JCR. Questo è di progettazione, ovvero per i rami della soluzione, in quanto il codice/gli stili saranno scritti per criteri specifici.
Congratulazioni, hai appena creato un nuovo modello e una nuova pagina con Adobe Experience Manager Sites.
A questo punto la pagina dell'articolo è chiaramente senza stile. Segui Librerie lato client e flusso di lavoro front-end esercitazione per scoprire le best practice per includere CSS e JavaScript per applicare stili globali al sito e integrare una build front-end dedicata.
Visualizza il codice finito su GitHub o rivedi e distribuisci il codice localmente in sul blocco Git tutorial/pages-templates-solution
.
tutorial/pages-templates-solution
ramo.