Använda Sling Resource Merger i AEM using-the-sling-resource-merger-in-aem
Syfte purpose
Med Sling Resource Merger får du tillgång till och kan sammanfoga resurser. Den innehåller olika mekanismer (differentiering) för båda:
-
Övertäckningar av resurser som använder konfigurerade sökvägar.
-
Åsidosättningar för komponentdialogrutor för det beröringsaktiverade användargränssnittet (
cq:dialog), använda resurstyphierarkin (med hjälp av egenskapensling:resourceSuperType).
Med Sling Resource Merger sammanfogas överläggnings-/åsidosättningsresurserna och/eller egenskaperna med de ursprungliga resurserna/egenskaperna:
-
Innehållet i den anpassade definitionen har en högre prioritet än det ursprungliga (dvs. det övertäckningar eller åsidosättningar den).
-
Vid behov egenskaper som definieras i anpassningen anger du hur innehåll som sammanfogas från originalet ska användas.
Mål för AEM goals-for-aem
Målet med Sling Resource Merger i AEM är att
-
se till att anpassningar inte görs i
/libs. -
minska strukturen som replikeras från
/libs.När du använder Samling Resource Merger bör du inte kopiera hela strukturen från
/libseftersom detta skulle resultera i att för mycket information sparas i anpassningen (vanligen/apps). Om du duplicerar information i onödan ökar risken för problem när systemet uppgraderas på något sätt.
sling:resourceSuperType för att skapa anslutningen./apps, vilket är den bästa metoden inom AEM är att definiera anpassningar enligt /apps; det beror på att du inte får ändra något under /libs./libs bana./libs skrivs över nästa gång du uppgraderar din instans (och kan mycket väl skrivas över när du använder en snabbkorrigering eller ett funktionspaket).-
Återskapa önskat objekt (d.v.s. som det finns i
/libs) under/apps -
Gör ändringar i
/apps
Egenskaper properties
Resurskoncentrationen har följande egenskaper:
-
sling:hideProperties(StringellerString[])Anger den egenskap, eller lista med egenskaper, som ska döljas.
Jokertecknet
*döljer alla. -
sling:hideResource(Boolean)Anger om resurserna ska vara helt dolda, inklusive dess underordnade.
-
sling:hideChildren(StringellerString[])Innehåller den underordnade noden, eller listan med underordnade noder, som ska döljas. Egenskaperna för noden bevaras.
Jokertecknet
*döljer alla. -
sling:orderBefore(String)Innehåller namnet på noden på samma nivå som den aktuella noden ska placeras framför.
Dessa egenskaper påverkar hur motsvarande/ursprungliga resurser/egenskaper (från /libs) används av övertäckningen/åsidosättningen (ofta i /apps).
Skapa strukturen creating-the-structure
Om du vill skapa en övertäckning eller åsidosättning måste du återskapa den ursprungliga noden, med motsvarande struktur, under målet (vanligtvis /apps). Till exempel:
-
Övertäckning
-
Definitionen av navigeringsposten för Sites-konsolen, som visas i järnvägen, definieras på:
/libs/cq/core/content/nav/sites/jcr:title -
Om du vill täcka över det här skapar du följande nod:
/apps/cq/core/content/nav/sitesUppdatera sedan egenskapen
jcr:titleefter behov.
-
-
Åsidosätt
-
Definitionen av den beröringsaktiverade dialogrutan för textkonsolen definieras på:
/libs/foundation/components/text/cq:dialog -
Om du vill åsidosätta detta skapar du följande nod, till exempel:
/apps/the-project/components/text/cq:dialog
-
Om du vill skapa någon av dessa behöver du bara återskapa skelettstrukturen. För att förenkla återskapandet av strukturen kan alla mellanliggande noder vara av typen nt:unstructured (De behöver inte återspegla den ursprungliga nodtypen. till exempel i /libs).
I ovanstående övertäckningsexempel behövs alltså följande noder:
/apps
/cq
/core
/content
/nav
/sites
/libs eftersom det skulle resultera i att för mycket information hålls kvar i /apps. Detta kan orsaka problem när systemet uppgraderas på något sätt.Användningsexempel use-cases
Dessa tillsammans med standardfunktioner gör att du kan:
-
Lägg till en egenskap
Egenskapen finns inte i
/libsdefinition, men krävs i/appsöverlägg/åsidosätt.- Skapa motsvarande nod i
/apps - Skapa den nya egenskapen på den här noden "
- Skapa motsvarande nod i
-
Omdefiniera en egenskap (inte automatiskt skapade egenskaper)
Egenskapen definieras i
/libs, men ett nytt värde krävs i/appsöverlägg/åsidosätt.-
Skapa motsvarande nod i
/apps -
Skapa matchande egenskap på den här noden (under /
apps)-
Egenskapen får en prioritet baserat på konfigurationen för Sling Resource Resolver.
-
Det går att ändra egenskapstypen.
Om du använder en annan egenskapstyp än den som används i
/libsanvänds egenskapstypen som du definierar.
-
note note NOTE Det går att ändra egenskapstypen. -
-
Omdefiniera en egenskap som har skapats automatiskt
Som standard skapas automatiskt egenskaper (till exempel
jcr:primaryType) är inte föremål för en övertäckning/åsidosättning för att säkerställa att den nodtyp som finns under/libsrespekteras. Om du vill använda en övertäckning/åsidosättning måste du återskapa noden i/apps, döljer egenskapen explicit och definierar om den:-
Skapa motsvarande nod under
/appsmed önskatjcr:primaryType -
Skapa egenskapen
sling:hidePropertiespå den noden, med värdet inställt på värdet för den automatiskt skapade egenskapen, till exempeljcr:primaryTypeDen här egenskapen, definierad under
/apps, får nu högre prioritet än den som definieras under/libs
-
-
Definiera om en nod och dess underordnade noder
Noden och dess underordnade noder definieras i
/libs, men en ny konfiguration krävs i/appsöverlägg/åsidosätt.-
Kombinera åtgärder från:
- Dölj underordnade noder för en nod (behåller nodens egenskaper)
- Definiera om egenskapen/egenskaperna
-
-
Dölj en egenskap
Egenskapen definieras i
/libs, men krävs inte i/appsöverlägg/åsidosätt.-
Skapa motsvarande nod i
/apps -
Skapa en egenskap
sling:hidePropertiesav typenStringellerString[]. Använd den här inställningen för att ange vilka egenskaper som ska döljas/ignoreras. Du kan också använda jokertecken. Till exempel:*["*"]jcr:title["jcr:title", "jcr:description"]
-
-
Dölja en nod och dess underordnade noder
Noden och dess underordnade noder definieras i
/libs, men krävs inte i/appsöverlägg/åsidosätt.-
Skapa motsvarande nod under /apps
-
Skapa en egenskap
sling:hideResource- typ:
Boolean - värde:
true
- typ:
-
-
Dölj underordnade noder för en nod (samtidigt som nodens egenskaper behålls)
Noden, dess egenskaper och underordnade noder definieras i
/libs. Noden och dess egenskaper krävs i/appsöverlägg/åsidosätt, men vissa eller alla underordnade noder krävs inte i/appsöverlägg/åsidosätt.-
Skapa motsvarande nod under
/apps -
Skapa egenskapen
sling:hideChildren:- typ:
String[] - värde: en lista med underordnade noder (enligt definition i
/libs) för att dölja/ignorera
Jokertecknet * kan användas för att dölja/ignorera alla underordnade noder.
- typ:
-
-
Ändra ordning på noder
Noden och dess jämställda noder definieras i
/libs. En ny position krävs så att noden återskapas i/appsöverlägg/åsidosätt, där den nya positionen definieras i referens till lämplig nod på samma nivå i/libs.-
Använd
sling:orderBeforeegenskap:-
Skapa motsvarande nod under
/apps -
Skapa egenskapen
sling:orderBefore:Detta anger noden (som i
/libs) som den aktuella noden ska placeras före:- typ:
String - värde:
<before-SiblingName>
- typ:
-
-
Anropa Sling Resource Merger från koden invoking-the-sling-resource-merger-from-your-code
Sling Resource Merger innehåller två anpassade resursprovidrar - en för övertäckningar och en annan för åsidosättningar. Var och en av dessa kan anropas i koden med hjälp av en monteringspunkt:
/libs).-
Övertäckning:
-
syfte: sammanfoga resurser baserat på sökvägar
-
monteringspunkt:
/mnt/overlay -
användning:
mount point + relative path -
exempel:
getResource('/mnt/overlay' + '<relative-path-to-resource>');
-
-
Åsidosätt:
-
syfte: sammanfoga resurser baserat på deras supertyp
-
monteringspunkt:
/mnt/overide -
användning:
mount point + absolute path -
exempel:
getResource('/mnt/override' + '<absolute-path-to-resource>');
-
Exempel på användning example-of-usage
Här följer några exempel:
-
Övertäckning:
-
Åsidosätt: