Sling Resource Merger fornisce servizi per accedere e unire le risorse. Fornisce meccanismi di differenze per entrambi:
Sovrapposizioni delle risorse utilizzando percorsi di ricerca.
Sostituzioni delle finestre di dialogo dei componenti per l’interfaccia touch (cq:dialog
), utilizzando la gerarchia dei tipi di risorsa (tramite la proprietà sling:resourceSuperType
).
Con Sling Resource Merger, le risorse e/o le proprietà di sovrapposizione/sostituzione vengono unite alle risorse/proprietà originali:
Il contenuto della definizione personalizzata ha una priorità più alta rispetto a quella dell’originale (ovvero sovrapposizioni o sostituzioni it).
Se necessario, proprietà definito nella personalizzazione, indica come deve essere utilizzato il contenuto unito dall’originale.
Sling Resource Merger e i metodi correlati possono essere utilizzati solo con l’interfaccia touch (l’unica disponibile per gli as a Cloud Service AEM).
Gli obiettivi per utilizzare Sling Resource Merger in AEM sono i seguenti:
assicurati che non vengano apportate modifiche di personalizzazione in /libs
.
ridurre la struttura da cui viene replicata /libs
.
Quando si utilizza Sling Resource Merger, non è consigliabile copiare l’intera struttura da /libs
in quanto ciò comporterebbe la memorizzazione di troppe informazioni nella personalizzazione (in genere /apps
). La duplicazione delle informazioni aumenta inutilmente la possibilità di problemi quando il sistema viene aggiornato in qualsiasi modo.
Tu deve non modificare nulla in /libs
percorso.
Questo perché il contenuto di /libs
può essere sovrascritto quando vengono applicati aggiornamenti all’istanza.
Le sovrapposizioni dipendono da percorsi di ricerca.
Le sostituzioni non dipendono dai percorsi di ricerca, utilizzano la proprietà sling:resourceSuperType
per effettuare la connessione.
Tuttavia, le sostituzioni sono spesso definite in /apps
, come best practice in AEM as a Cloud Service è di definire le personalizzazioni in /apps
; questo perché non è necessario modificare nulla in /libs
.
La fusione delle risorse fornisce le seguenti proprietà:
sling:hideProperties
( String
oppure String[]
)
Specifica la proprietà o l'elenco di proprietà da nascondere.
Il carattere jolly *
nasconde tutto.
sling:hideResource
( Boolean
)
Indica se le risorse devono essere completamente nascoste, inclusi i relativi elementi secondari.
sling:hideChildren
( String
oppure String[]
)
Contiene il nodo figlio, o elenco di nodi figlio, da nascondere. Le proprietà del nodo vengono mantenute.
Il carattere jolly *
nasconde tutto.
sling:orderBefore
( String
)
Contiene il nome del nodo di pari livello che deve essere posizionato davanti al nodo corrente.
Queste proprietà influiscono sul modo in cui le risorse/proprietà originali/corrispondenti (da /libs
) vengono utilizzati dalla sovrapposizione/esclusione (spesso in /apps
).
Per creare una sovrapposizione o una sostituzione è necessario ricreare il nodo originale, con la struttura equivalente, sotto la destinazione (in genere /apps
). Ad esempio:
Sovrapposizione
La definizione della voce di navigazione per la console Sites, come mostrato nella barra, è definita in:
/libs/cq/core/content/nav/sites/jcr:title
Per sovrapporsi, crea il seguente nodo:
/apps/cq/core/content/nav/sites
Quindi aggiorna la proprietà jcr:title
secondo necessità.
Sostituisci
La definizione della finestra di dialogo touch per la console Testi è definita in:
/libs/foundation/components/text/cq:dialog
Per evitare questo problema, crea il seguente nodo, ad esempio:
/apps/the-project/components/text/cq:dialog
Per creare uno di questi elementi è sufficiente ricreare la struttura dell'ossatura. Per semplificare la ricreazione della struttura, tutti i nodi intermedi possono essere di tipo nt:unstructured
(non devono necessariamente riflettere il tipo di nodo originale; ad esempio, in /libs
).
Nell’esempio di sovrapposizione precedente, sono necessari i seguenti nodi:
/apps
/cq
/core
/content
/nav
/sites
Quando si utilizza Sling Resource Merger (cioè quando si tratta dell’interfaccia utente standard touch), non è consigliabile copiare l’intera struttura da /libs
in quanto comporterebbe la memorizzazione di troppe informazioni /apps
. Questo può causare problemi quando il sistema viene aggiornato in qualsiasi modo.
Queste funzionalità, insieme a quelle standard, consentono di:
Aggiungi una proprietà
La proprietà non esiste in /libs
ma è richiesto nella sezione /apps
sovrapposizione/sostituzione.
/apps
Ridefinire una proprietà (proprietà non create automaticamente)
La proprietà è definita in /libs
, ma è necessario un nuovo valore in /apps
sovrapposizione/sostituzione.
Crea il nodo corrispondente in /apps
Crea la proprietà corrispondente su questo nodo (sotto / apps
)
La proprietà avrà una priorità in base alla configurazione di Sling Resource Resolver.
È supportata la modifica del tipo di proprietà.
Se utilizzi un tipo di proprietà diverso da quello utilizzato in /libs
, viene utilizzato il tipo di proprietà definito.
È supportata la modifica del tipo di proprietà.
Ridefinire una proprietà creata automaticamente
Per impostazione predefinita, le proprietà create automaticamente (come jcr:primaryType
) non sono soggetti a sovrapposizione/esclusione per garantire che il tipo di nodo attualmente in /libs
è rispettato. Per imporre una sovrapposizione/esclusione è necessario ricreare il nodo in /apps
, nasconde esplicitamente la proprietà e la ridefinisce:
Crea il nodo corrispondente in /apps
con il jcr:primaryType
Creare la proprietà sling:hideProperties
su tale nodo, con il valore impostato su quello della proprietà creata automaticamente; ad esempio, jcr:primaryType
Questa proprietà, definita in /apps
, avrà ora la priorità rispetto a quello definito in /libs
Ridefinire un nodo e i relativi elementi secondari
Il nodo e i relativi elementi secondari sono definiti in /libs
, ma è necessaria una nuova configurazione in /apps
sovrapposizione/sostituzione.
Combina le azioni di:
Nascondere una proprietà
La proprietà è definita in /libs
, ma non richiesto nella /apps
sovrapposizione/sostituzione.
Crea il nodo corrispondente in /apps
Creare una proprietà sling:hideProperties
di tipo String
o String[]
. Utilizzare questa opzione per specificare le proprietà da nascondere/ignorare. È inoltre possibile utilizzare i caratteri jolly. Ad esempio:
*
["*"]
jcr:title
["jcr:title", "jcr:description"]
Nascondere un nodo e i relativi elementi figlio
Il nodo e i relativi elementi secondari sono definiti in /libs
, ma non richiesto nella /apps
sovrapposizione/sostituzione.
Crea il nodo corrispondente in /apps
Creare una proprietà sling:hideResource
Boolean
true
Nascondi gli elementi secondari di un nodo (mantenendo le proprietà del nodo)
Il nodo, le relative proprietà e i relativi elementi secondari sono definiti in /libs
. Il nodo e le relative proprietà sono necessari nel /apps
overlay/override, ma alcuni o tutti i nodi secondari non sono necessari nel /apps
sovrapposizione/sostituzione.
Crea il nodo corrispondente in /apps
Creare la proprietà sling:hideChildren
:
String[]
/libs
) per nascondere/ignorareIl carattere jolly * può essere utilizzato per nascondere/ignorare tutti i nodi figlio.
Riordina nodi
Il nodo e i relativi elementi di pari livello sono definiti in /libs
. È necessaria una nuova posizione in modo che il nodo venga ricreato in /apps
overlay/override, in cui la nuova posizione viene definita in riferimento al nodo di pari livello appropriato in /libs
.
Utilizza il sling:orderBefore
proprietà:
Crea il nodo corrispondente in /apps
Creare la proprietà sling:orderBefore
:
Specifica il nodo (come in /libs
) il nodo corrente deve essere posizionato prima di:
String
<before-SiblingName>
Sling Resource Merger include due provider di risorse personalizzati: uno per le sovrapposizioni e l’altro per le sostituzioni. Ognuna di queste può essere richiamata all’interno del codice utilizzando un punto di montaggio:
Quando si accede alla risorsa, si consiglia di utilizzare il punto di montaggio appropriato.
In questo modo viene richiamato Sling Resource Merger e viene restituita la risorsa completamente unita, riducendo la struttura da cui deve essere replicata /libs
).
Sovrapposizione:
finalità: unire le risorse in base al relativo percorso di ricerca
punto di montaggio: /mnt/overlay
utilizzo: mount point + relative path
esempio:
getResource('/mnt/overlay' + '<relative-path-to-resource>');
Sostituisci:
finalità: unire le risorse in base al loro super tipo
punto di montaggio: /mnt/overide
utilizzo: mount point + absolute path
esempio:
getResource('/mnt/override' + '<absolute-path-to-resource>');