Sovrapposizioni overlays

Adobe Experience Manager (AEM), e prima ancora CQ, da tempo si avvale del principio delle sovrapposizioni per estendere e personalizzare console e altre funzionalità (ad esempio authoring delle pagine).

Sovrapposizione è un termine utilizzato in molti contesti. In questo contesto (estensione dell’AEM), una sovrapposizione significa accettare la funzionalità predefinita e imporre le tue definizioni al riguardo (per personalizzare la funzionalità standard).

In un’istanza standard, la funzionalità predefinita si trova sotto /libs e si consiglia di definire la sovrapposizione (personalizzazioni) in /apps filiale. L’AEM utilizza un percorso di ricerca per trovare una risorsa, eseguendo prima la ricerca nel /apps e quindi il /libs filiale (il il percorso di ricerca può essere configurato). Questo meccanismo indica che la sovrapposizione (e le personalizzazioni ivi definite) ha la priorità.

A partire dalla versione 6.0 dell’AEM, sono state apportate modifiche alle modalità di implementazione e utilizzo delle sovrapposizioni:

  • AEM 6.0 e on - for GraniteSovrapposizioni relative a (ovvero l’interfaccia touch)

    • Metodo

      • Ricostruire l’appropriato /libs struttura in /apps.

        Questo non richiede una copia 1:1, il Sling Resource Merger viene utilizzato per fare riferimento incrociato alle definizioni originali richieste. Sling Resource Merger fornisce servizi per l’accesso e l’unione di risorse con meccanismi di differenze.

      • Sotto /apps, apporta le modifiche necessarie.

    • Vantaggi

      • Più robusto per le modifiche in /libs.
      • Ridefinisci solo ciò che è richiesto.
  • Sovrapposizioni e sovrapposizioni non-Granite prima di AEM 6.0

    • Metodo

      • Copia il contenuto da /libs a /apps

        Copia l’intero sottoramo, comprese le proprietà.

      • Sotto /apps, apporta le modifiche necessarie.

    • Svantaggi

      • Anche se le modifiche non andranno perse quando qualcosa cambia in /libs, potrebbe essere necessario ricreare alcune modifiche che si verificano nella sovrapposizione in /apps.
CAUTION
Il Sling Resource Merger e i metodi correlati possono essere utilizzati solo con Granite. Ciò significa che la creazione di una sovrapposizione con una struttura di ossatura è appropriata solo per l’interfaccia utente standard touch.
Le sovrapposizioni per altre aree (inclusa l’interfaccia classica) implicano la copia del nodo e dell’intera sottostruttura appropriati, quindi l’apporto delle modifiche necessarie.

Le sovrapposizioni sono il metodo consigliato per molte modifiche, ad esempio configurazione delle console o creazione della categoria di selezione nel browser risorse nel pannello laterale (utilizzato per l’authoring delle pagine). Sono necessari in quanto:

  • Do not apportare modifiche in /libs filiale ​ Qualsiasi modifica apportata potrebbe andare persa, poiché questo ramo potrebbe subire modifiche ogni volta che:

    • aggiorna nell’istanza
    • applicare un hotfix
    • installare un feature pack
  • Concentrano le modifiche in un'unica posizione, semplificando il monitoraggio, la migrazione, il backup o il debug delle modifiche, in base alle esigenze.

Configurazione dei percorsi di ricerca configuring-the-search-paths

Per le sovrapposizioni, la risorsa consegnata è un aggregato delle risorse e delle proprietà recuperate, a seconda dei percorsi di ricerca che possono essere definiti:

  • La risorsa Percorso di ricerca del Risolutore come definito nella Configurazione OSGi per Apache Sling Resource Resolver Factory.

    • L’ordine discendente dei percorsi di ricerca indica le rispettive priorità.
    • In un'installazione standard, i valori predefiniti principali sono /apps, /libs - in modo che il contenuto /apps ha una priorità più alta di quella di /libs (ovvero, sovrapposizioni it).
  • Due utenti del servizio hanno bisogno dell'accesso JCR:READ alla posizione in cui sono memorizzati gli script. Tali utenti sono: components-search-service (utilizzato dai componenti com.day.cq.wcm.coreto access/cache ) e sling-scripting (utilizzato da org.apache.sling.servlets.resolver per trovare i servlet).

  • La seguente configurazione deve essere configurata anche in base alla posizione in cui inserisci gli script (in questo esempio in /etc, /libs o /apps).

    code language-none
    PID = org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl
    resource.resolver.searchpath=["/etc","/apps","/libs"]
    resource.resolver.vanitypath.whitelist=["/etc/","/apps/","/libs/","/content/"]
    
  • Infine, è necessario configurare anche il Servlet Resolver (in questo esempio, per aggiungere anche /etc)

    code language-none
    PID = org.apache.sling.servlets.resolver.SlingServletResolver
    servletresolver.paths=["/bin/","/libs/","/apps/","/etc/","/system/","/index.servlet","/login.servlet","/services/"]
    

Esempio di utilizzo example-of-usage

Alcuni esempi sono trattati quando:

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2