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.

NOTA
Adobe consiglia di utilizzare l’interfaccia utente touch per sfruttare le tecnologie più recenti. Gli strumenti di modernizzazione AEM possono semplificare la migrazione.

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.

NOTA
Le eccezioni sono i campi modulo base dell’interfaccia utente Granite (utilizzati nelle finestre di dialogo). Questi richiedono ancora l’utilizzo di JSP.

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:

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:

NOTA
Questi meccanismi possono essere utilizzati anche per trasferire il componente tra altre istanze, ad esempio dallo sviluppo all’istanza di test.

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.
  • 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
  • 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

  • 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 proprio cq: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.

  1. 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.
  2. 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.

  3. cq:icon.png o cq: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

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.