De samenvoeging van Verkoopbronnen in AEM gebruiken using-the-sling-resource-merger-in-aem
Doel purpose
Sling Resource Merger verleent de diensten om tot middelen toegang te hebben en samen te voegen. Het verstrekt afdiff (differentiërende) mechanismen voor allebei:
-
Bedekkingen van middelen die gevormde onderzoekspaden gebruiken.
-
treedt van componentendialogen voor aanraking-toegelaten UI (
cq:dialog) met voeten, gebruikend de hiërarchie van het middeltype (door middel van het bezitsling:resourceSuperType).
Sling Resource Merger combineert zowel overlay als override resources (en hun eigenschappen) met de oorspronkelijke bronnen en eigenschappen:
-
De inhoud van de aangepaste definitie heeft een hogere prioriteit dan het origineel. Namelijk het overlays of treedt het met voeten.
-
Waar noodzakelijk, eigenschappen die in de aanpassing worden bepaald, wijzen erop hoe de inhoud die van origineel wordt samengevoegd moet worden gebruikt.
Doelen voor AEM goals-for-aem
De doelstellingen voor het gebruiken van de Verschuivende Fusie van Middel in AEM zijn:
-
zorgt u ervoor dat er geen wijzigingen in de aanpassing worden aangebracht in
/libs. -
reduceert de structuur die wordt gerepliceerd vanuit
/libs.Wanneer u Sling Resource Merger gebruikt, wordt het niet aangeraden de volledige structuur van
/libste kopiëren. De reden hiervoor is dat er te veel informatie in de aanpassing wordt opgeslagen (meestal/apps). Het dupliceren van informatie verhoogt onnodig de kans op problemen wanneer het systeem wordt bevorderd.
sling:resourceSuperType om de verbinding te maken./apps , omdat aanpassingen het beste in AEM kunnen worden gedefinieerd onder /apps . De reden is dat u niets onder /libs moet wijzigen./libs weg./libs de volgende keer dat u een upgrade uitvoert van de instantie, wordt overschreven. Het kan ook zijn dat deze wordt overschreven wanneer u een hotfix- of functiepakket toepast.-
Het vereiste item opnieuw maken (dat wil zeggen, zoals het in
/libsstaat) onder/apps -
Breng eventuele wijzigingen aan binnen
/apps
Eigenschappen properties
De resourcefusie biedt de volgende eigenschappen:
-
sling:hideProperties(StringofString[])Geeft de eigenschap op, of een lijst met eigenschappen, die moet worden verborgen.
Alle jokertekens worden verborgen.
* -
sling:hideResource(Boolean)Het geeft aan of de middelen volledig verborgen zijn, inclusief de kinderen.
-
sling:hideChildren(StringofString[])Het bevat het onderliggende knooppunt of de lijst met onderliggende knooppunten die moet worden verborgen. De eigenschappen van het knooppunt blijven behouden.
Alle jokertekens worden verborgen.
* -
sling:orderBefore(String)Het bevat de naam van de sibling knoop die de huidige knoop voor van wordt geplaatst.
Deze eigenschappen beïnvloeden hoe de corresponderende / oorspronkelijke bronnen / eigenschappen (van /libs) worden gebruikt door de overlay / overschrijving (vaak in /apps ).
De structuur maken creating-the-structure
Als u een overlay wilt maken of overschrijven, moet u het oorspronkelijke knooppunt opnieuw maken, met de equivalente structuur, onder het doel (gewoonlijk /apps ). Bijvoorbeeld:
-
Bedekking
-
De definitie van het navigatie-item voor de Sites-console, zoals weergegeven in de spoorstaaf, is gedefinieerd op:
/libs/cq/core/content/nav/sites/jcr:title -
Als u een bedekking wilt maken, maakt u het volgende knooppunt:
/apps/cq/core/content/nav/sitesWerk vervolgens de eigenschap
jcr:titlenaar wens bij.
-
-
Negeren
-
De definitie van het aanraakvenster voor de console van Teksten is als volgt:
/libs/foundation/components/text/cq:dialog -
Om met voeten te treden, creeer de volgende knoop. Bijvoorbeeld:
/apps/the-project/components/text/cq:dialog
-
Als u een van beide wilt maken, hoeft u alleen de skeletstructuur opnieuw te maken. Om de recreatie van de structuur te vereenvoudigen, kunnen alle intermediaire knooppunten van het type nt:unstructured zijn (ze hoeven niet op het oorspronkelijke knooppunttype te wijzen. Bijvoorbeeld in /libs .
In het bovenstaande overlayvoorbeeld zijn dus de volgende knooppunten nodig:
/apps
/cq
/core
/content
/nav
/sites
/libs . De reden is dat dit ertoe zou leiden dat er te veel informatie in /apps wordt opgeslagen. Dit kan problemen veroorzaken wanneer het systeem wordt bijgewerkt.Gebruik hoofdletters use-cases
Met de standaardfunctionaliteit kunt u met deze gebruiksgevallen het volgende doen:
-
voeg een bezit toe
De eigenschap bestaat niet in de definitie
/libs, maar is vereist in de/appsoverlay/overschrijving.- Het corresponderende knooppunt maken binnen
/apps - Maak de nieuwe eigenschap op dit knooppunt "
- Het corresponderende knooppunt maken binnen
-
herdefinieert een bezit (niet auto-gecreeerde eigenschappen)
De eigenschap wordt gedefinieerd in
/libs, maar er is een nieuwe waarde vereist in de/appsoverlay/override.-
Het corresponderende knooppunt maken binnen
/apps -
De overeenkomende eigenschap op dit knooppunt maken (onder
apps)-
Het bezit heeft een prioriteit die op de het Verspreiden configuratie van de Resolver van het Middel wordt gebaseerd.
-
Het wijzigen van het type eigenschap wordt ondersteund.
Als u een ander type eigenschap gebruikt dan in
/libswordt gebruikt, wordt het type eigenschap dat u definieert gebruikt.
-
note note NOTE Het wijzigen van het type eigenschap wordt ondersteund. -
-
herdefinieert een auto-gecreeerde bezit
Standaard zijn automatisch gemaakte eigenschappen (zoals
jcr:primaryType) niet onderworpen aan een bedekking/overschrijving om ervoor te zorgen dat het knooppunttype dat momenteel onder/libsvalt, wordt gerespecteerd. Als u een bedekking/overschrijving wilt toepassen, moet u het knooppunt opnieuw maken in/apps, de eigenschap expliciet verbergen en opnieuw definiëren:-
Maak het corresponderende knooppunt onder
/appsmet het gewenstejcr:primaryType -
Maak de eigenschap
sling:hidePropertiesop dat knooppunt, met de waarde ingesteld op die van de eigenschap auto-created, bijvoorbeeldjcr:primaryTypeDeze eigenschap, gedefinieerd onder
/apps, krijgt nu prioriteit boven de eigenschap die is gedefinieerd onder/libs.
-
-
herdefinieert een knoop en zijn kinderen
Het knooppunt en de onderliggende knooppunten worden gedefinieerd in
/libs, maar er is een nieuwe configuratie vereist in de/apps-overlay/overschrijving.-
Combineer de handelingen van:
- Onderliggende items van een knooppunt verbergen (de eigenschappen van het knooppunt behouden)
- De eigenschap/eigenschappen opnieuw definiëren
-
-
verberg een bezit
De eigenschap wordt gedefinieerd in
/libs, maar is niet vereist in de/appsoverlay/overschrijving.-
Het corresponderende knooppunt maken binnen
/apps -
Maak een eigenschap
sling:hidePropertiesvan het typeStringofString[]. Gebruik deze optie om de eigenschappen op te geven die moeten worden verborgen of genegeerd. Jokertekens kunnen ook worden gebruikt. Bijvoorbeeld:*["*"]jcr:title["jcr:title", "jcr:description"]
-
-
verberg een knoop en zijn kinderen
Het knooppunt en de onderliggende knooppunten worden gedefinieerd in
/libs, maar zijn niet vereist in de/apps-overlay/overschrijving.-
Het corresponderende knooppunt maken onder
/apps -
Een eigenschap maken
sling:hideResource- type:
Boolean - value:
true
- type:
-
-
de kinderen van de Huid van een knoop (terwijl het houden van de eigenschappen van de knoop)
Het knooppunt, de eigenschappen en onderliggende knooppunten worden gedefinieerd in
/libs. Het knooppunt en de bijbehorende eigenschappen zijn vereist in de/apps-overlay/overschrijving, maar sommige of alle onderliggende knooppunten zijn niet vereist in de/apps-overlay/overschrijving.-
Het corresponderende knooppunt maken onder
/apps -
Maak de eigenschap
sling:hideChildren:- type:
String[] - waarde: een lijst met onderliggende knooppunten (zoals gedefinieerd in
/libs) die moeten worden verborgen/genegeerd
Jokerteken* kan worden gebruikt om alle onderliggende knooppunten te verbergen of te negeren.
- type:
-
-
opnieuw ordenen knopen
Het knooppunt en de knooppunten op hetzelfde niveau worden gedefinieerd in
/libs. Als u de volgorde wilt wijzigen, maakt u het knooppunt opnieuw in de/apps-bedekking of -overschrijving. Definieer de nieuwe positie door te verwijzen naar het juiste knooppunt op hetzelfde niveau in/libs.-
Gebruik de eigenschap
sling:orderBefore:-
Het corresponderende knooppunt maken onder
/apps -
Maak de eigenschap
sling:orderBefore:Geeft het knooppunt aan (zoals in
/libs) dat voor het huidige knooppunt wordt geplaatst:- type:
String - value:
<before-SiblingName>
- type:
-
-
Roep de samenvoeging van het Verspreide Middel van uw code aan invoking-the-sling-resource-merger-from-your-code
De samenvoeging van het Verspreide Middel omvat twee leveranciers van douanemiddel - voor bekledingen en een andere voor met voeten treedt. Elk element kan binnen de code worden aangeroepen met behulp van een koppelpunt:
/libs moet kopiëren.-
Bedekking:
-
doel: voeg bronnen samen op basis van hun zoekpad
-
koppelpunt:
/mnt/overlay -
use:
mount point + relative path -
voorbeeld:
getResource('/mnt/overlay' + '<relative-path-to-resource>');
-
-
Overschrijven:
-
doel: voeg bronnen samen op basis van hun supertype
-
koppelpunt:
/mnt/overide -
use:
mount point + absolute path -
voorbeeld:
getResource('/mnt/override' + '<absolute-path-to-resource>');
-
Voorbeeld van het gebruik example-of-usage
Enkele voorbeelden worden behandeld:
-
Bedekking:
-
Overschrijven: