Interfaccia touch e interfaccia classica
Prima di avviare qualsiasi discussione seria sullo sviluppo di componenti, è necessario sapere quale interfaccia utente vengono utilizzati dagli autori:
- Interfaccia touch
L'interfaccia utente standard si basa sull'esperienza utente unificata per Adobe Experience Cloud, utilizzando le tecnologie sottostanti di Coral UI e Granite UI. - Interfaccia classica
Interfaccia utente basata sulla tecnologia ExtJS, ora obsoleta con AEM 6.4.
Per ulteriori dettagli, consulta Raccomandazioni sull'interfaccia utente per i clienti.
I componenti possono essere implementati per supportare l’interfaccia touch, l’interfaccia classica o entrambe. Quando osservi un’istanza standard, trovi anche componenti pronti all’uso originariamente progettati per l’interfaccia classica, l’interfaccia touch o entrambe.
Le nozioni di base su entrambi sono descritte in questa pagina e come riconoscerli.
Logica dei contenuti e markup di rendering
Adobe consiglia di mantenere il codice responsabile del markup e del rendering separato dal codice che controlla la logica utilizzata per selezionare il contenuto del componente.
Questa filosofia è supportata da HTL, un linguaggio di modelli appositamente limitato per garantire che venga utilizzato un linguaggio di programmazione reale per definire la logica di business sottostante. Questa logica (facoltativa) viene richiamata da HTL con un comando specifico. Questo meccanismo evidenzia il codice chiamato per una determinata vista e, se necessario, consente una logica specifica per diverse viste dello stesso componente.
Confronto tra HTL e JSP
HTL è un linguaggio per modelli HTML introdotto con AEM 6.0.
La discussione sull'utilizzo di HTL o JSP (Java™ Server Pages) durante lo sviluppo di componenti personalizzati deve essere semplice, in quanto HTL è ora il linguaggio di script consigliato per AEM.
Sia HTL che JSP possono essere utilizzati per lo sviluppo di componenti sia per l’interfaccia utente classica che per quella touch. Sebbene ci possa essere una tendenza a presumere che HTL sia solo per l’interfaccia touch e JSP per l’interfaccia classica, si tratta di un’idea errata e più dovuta ai tempi. L’interfaccia utente touch e HTL sono stati incorporati in AEM nello stesso periodo. Poiché HTL è ora la lingua consigliata, viene utilizzato per nuovi componenti, che in genere sono per l’interfaccia utente touch.
Sviluppo di componenti personalizzati
Per creare componenti personalizzati per l’interfaccia utente appropriata, consulta (dopo aver letto questa pagina):
Un modo rapido per iniziare è copiare un componente esistente e quindi apportare le modifiche desiderate. Per informazioni su come creare componenti personalizzati e aggiungerli al sistema paragrafo, consulta:
- Sviluppo di componenti (incentrato sull'interfaccia touch)
Spostamento dei componenti nell’istanza di pubblicazione
I componenti che eseguono il rendering del contenuto devono essere distribuiti nella stessa istanza di AEM del contenuto. Pertanto, tutti i componenti utilizzati per l’authoring e il rendering delle pagine nell’istanza di authoring devono essere distribuiti nell’istanza di pubblicazione. Una volta implementati, i componenti sono disponibili per eseguire il rendering delle pagine attivate.
Per spostare i componenti nell’istanza Publish, utilizza i seguenti strumenti:
- Utilizzare Gestione pacchetti per aggiungere i componenti a un pacchetto e spostarli in un'altra istanza di AEM.
- Utilizzare lo strumento di replica Attiva albero per replicare i componenti.
Componenti di cui tenere conto fin dall'inizio
-
Pagina:
- AEM ha il componente page (
cq:Page
). - Si tratta di un tipo specifico di risorsa importante per la gestione dei contenuti.
- Una pagina corrisponde a una pagina web che contiene il contenuto del sito web.
- AEM ha il componente page (
-
Sistemi paragrafo:
- Il sistema paragrafo è una parte chiave di un sito web in quanto gestisce un elenco di paragrafi. Viene utilizzato per contenere e strutturare i singoli componenti che contengono il contenuto effettivo.
- Potete creare, spostare, copiare ed eliminare paragrafi nel sistema paragrafo.
- Potete anche selezionare i componenti da rendere disponibili per l'uso all'interno di un sistema paragrafo specifico.
- In un'istanza standard sono disponibili vari sistemi paragrafo (ad esempio,
parsys
,[responsivegrid](/docs/experience-manager-65/sites-authoring/responsive-layout.md)
).
Struttura
La struttura di un componente AEM è potente e flessibile, le considerazioni principali sono:
- Tipo risorsa
- Definizione del componente
- Proprietà e nodi figlio di un componente
- Finestre di dialogo
- Finestre di dialogo per progettazione
- Disponibilità dei componenti
- Componenti e contenuti creati
Tipo risorsa
Un elemento chiave della struttura è il tipo di risorsa.
- La struttura del contenuto dichiara le intenzioni.
- Il tipo di risorsa li implementa.
Si tratta di un’astrazione che garantisce che, anche quando l’aspetto cambia nel tempo, l’intenzione rimanga nel tempo.
Definizione del componente
Nozioni di base sui componenti
La definizione di un componente può essere suddivisa come segue:
-
I componenti AEM si basano su Sling.
-
I componenti di AEM si trovano (in genere) in:
- HTL:
/libs/wcm/foundation/components
- JSP:
/libs/foundation/components
- HTL:
-
I componenti specifici del progetto/sito si trovano (in genere) in:
/apps/<myApp>/components
-
I componenti standard di AEM sono definiti come
cq:Component
e presentano gli elementi chiave:-
proprietà jcr:
Un elenco di proprietà jcr; queste sono variabili e alcune possono essere facoltative sebbene la struttura di base di un nodo componente, le sue proprietà e i sottonodi siano definiti dalla definizione
cq:Component
-
Risorse:
Questi definiscono gli elementi statici utilizzati dal componente.
-
Script:
Vengono utilizzati per implementare il comportamento dell’istanza risultante del componente.
-
-
Nodo principale:
<mycomponent> (cq:Component)
- Nodo gerarchico del componente.
-
Proprietà vitali:
-
jcr:title
- Titolo componente; ad esempio, utilizzato come etichetta quando il componente è elencato nel browser componenti o nella barra laterale. -
jcr:description
- Descrizione del componente; può essere utilizzato come suggerimento del mouse nel browser componenti o nella barra laterale. -
Interfaccia classica:
icon.png
- Icona per questo componente.thumbnail.png
- Immagine mostrata se il componente è elencato nel sistema paragrafo.
-
Interfaccia utente touch
- Per informazioni dettagliate, consulta la sezione Icona componente nell'interfaccia utente touch.
-
-
Nodi figlio vitali:
-
cq:editConfig (cq:EditConfig)
- Definisce le proprietà di modifica del componente e consente la visualizzazione del componente nel browser Componenti o in Sidekick.Nota: se il componente ha una finestra di dialogo, questa viene visualizzata automaticamente nel browser Componenti o in Sidekick, anche se cq:editConfig non esiste.
-
cq:childEditConfig (cq:EditConfig)
- Controlla gli aspetti dell'interfaccia utente di authoring per i componenti figlio che non definiscono il propriocq:editConfig
. -
Interfaccia touch:
cq:dialog
(nt:unstructured
) - Finestra di dialogo per questo componente. Definisce l’interfaccia che consente all’utente di configurare il componente e/o modificare il contenuto.cq:design_dialog
(nt:unstructured
) - Modifica progettazione per questo componente
-
Interfaccia classica:
dialog
(cq:Dialog
) - Finestra di dialogo per questo componente. Definisce l’interfaccia che consente all’utente di configurare il componente, modificarne il contenuto o entrambi.design_dialog
(cq:Dialog
) - Modifica progettazione per questo componente.
-
Icona del componente nell’interfaccia utente touch
L’icona o l’abbreviazione del componente viene definita tramite le proprietà JCR del componente quando questo viene creato dallo sviluppatore. Queste proprietà vengono valutate nell'ordine seguente e viene utilizzata la prima proprietà valida trovata.
-
cq:icon
- Proprietà stringa che punta a un'icona standard nella Libreria interfaccia utente Coral da visualizzare nel browser componenti- Utilizza il valore dell’attributo HTML dell’icona Coral.
-
abbreviation
- Proprietà stringa per personalizzare l'abbreviazione del nome del componente nel browser componenti-
L’abbreviazione deve essere limitata a due caratteri.
-
Se si specifica una stringa vuota, verrà creata l'abbreviazione dei primi due caratteri della proprietà
jcr:title
.- Ad esempio, "Im" per "Immagine"
- Il titolo localizzato viene utilizzato per creare l’abbreviazione.
-
L'abbreviazione viene tradotta solo se il componente ha una proprietà
abbreviation_commentI18n
, che viene quindi utilizzata come suggerimento di traduzione.
-
-
cq:icon.png
ocq:icon.svg
- Icona per questo componente, visualizzata nel browser componenti- 20 x 20 pixel sono le dimensioni delle icone dei componenti standard.
- Le icone più grandi vengono ridimensionate (lato client).
- Il colore consigliato è rgb(112, 112, 112) > #707070
- Lo sfondo delle icone dei componenti standard è trasparente.
- Sono supportati solo
.png
e.svg
file. - Se si esegue l'importazione dal file system tramite il plug-in Eclipse, i nomi dei file devono essere preceduti, ad esempio, da
_cq_icon.png
o_cq_icon.svg
. .png
ha la precedenza su.svg
se entrambi sono presenti
- 20 x 20 pixel sono le dimensioni delle icone dei componenti standard.
Se nessuna delle proprietà precedenti ( cq:icon
, abbreviation
, cq:icon.png
o cq:icon.svg
) è presente nel componente:
- Il sistema cerca le stesse proprietà nei super componenti seguendo la proprietà
sling:resourceSuperType
. - Se non viene trovato nulla o un'abbreviazione vuota a livello di super componente, il sistema crea l'abbreviazione dalle prime lettere della proprietà
jcr:title
del componente corrente.
Per annullare l'ereditarietà delle icone dai super componenti, l'impostazione di una proprietà abbreviation
vuota sul componente ripristina il comportamento predefinito.
Nella Console componenti viene visualizzato il modo in cui è definita l'icona di un particolare componente.