Het gebruiken van de Verschuivende Fusie van het Middel in AEM
- Onderwerpen:
- Ontwikkelen
Gemaakt voor:
- Ontwikkelaar
Doel
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 onderzoekspadengebruiken.
-
treedt van componentendialogen voor aanraking-toegelaten UI (
cq:dialog
) met voeten, gebruikend de hiërarchie van het middeltype (door middel van het bezitsling:resourceSuperType
).
Met de Verschuivende Fusie van het Middel, worden de bedekking/met voeten getreden middelen en/of de eigenschappen samengevoegd met de originele middelen/eigenschappen:
-
De inhoud van de aangepaste definitie heeft een hogere prioriteit dan die van origineel (namelijk het bekledingen of met voeten treedt het).
-
Waar noodzakelijk, eigenschappendie in de aanpassing worden bepaald, wijzen erop hoe de inhoud die van origineel wordt samengevoegd moet worden gebruikt.
Doelen voor AEM
De doelstellingen voor het gebruiken van de Verschuivende Fusie van het 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 de samenvoeging van meerdere bronnen gebruikt, wordt het niet aangeraden de volledige structuur van
/libs
te kopiëren, omdat dit ertoe zou leiden dat er te veel informatie in de aanpassing wordt bewaard (gewoonlijk/apps
). Het dupliceren van informatie vergroot onnodig de kans op problemen wanneer het systeem op om het even welke manier wordt verbeterd.
sling:resourceSuperType
./apps
, omdat aanpassingen AEM /apps
het beste kunnen worden gedefinieerd. Dit komt omdat u niets onder /libs
moet wijzigen./libs
weg veranderen./libs
de volgende keer dat u een upgrade uitvoert van de instantie wordt overschreven (en dat deze inhoud ook kan worden overschreven wanneer u een hotfix- of functiepakket toepast).-
Het vereiste item opnieuw maken (dat wil zeggen, zoals het in
/libs
staat) onder/apps
-
Breng eventuele wijzigingen aan binnen
/apps
Eigenschappen
De resourcefusie biedt de volgende eigenschappen:
-
sling:hideProperties
(String
ofString[]
)Geeft de eigenschap op, of een lijst met eigenschappen, die moet worden verborgen.
Alle jokertekens worden verborgen.
*
-
sling:hideResource
(Boolean
)Geeft aan of de bronnen volledig verborgen moeten zijn, inclusief de onderliggende elementen.
-
sling:hideChildren
(String
ofString[]
)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
)Bevat de naam van de sibling knoop die de huidige knoop voor van zou moeten worden geplaatst.
Deze eigenschappen beïnvloeden hoe de corresponderende/oorspronkelijke resources/eigenschappen (van /libs
) worden gebruikt door de overlay/overschrijving (vaak in /apps
).
De structuur maken
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 dit wilt bedekken, maakt u het volgende knooppunt:
/apps/cq/core/content/nav/sites
Werk vervolgens de eigenschap
jcr:title
naar wens bij.
-
-
Negeren
-
De definitie van het aanraakdialoogvenster voor de tekstconsole is als volgt:
/libs/foundation/components/text/cq:dialog
-
Als u dit wilt overschrijven, maakt u het volgende knooppunt, bijvoorbeeld:
/apps/the-project/components/text/cq:dialog
-
Als u een van deze opties 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 het oorspronkelijke knooppunttype te weerspiegelen, bijvoorbeeld in /libs
).
In het bovenstaande overlayvoorbeeld zijn dus de volgende knooppunten nodig:
/apps
/cq
/core
/content
/nav
/sites
/libs
te kopiëren, omdat dit ertoe zou leiden dat er te veel informatie in /apps
wordt opgeslagen. Dit kan problemen veroorzaken wanneer het systeem op om het even welke manier wordt bevorderd.Gevallen gebruiken
Deze, samen met standaardfunctionaliteit, laten u toe:
-
voeg een bezit toe
De eigenschap bestaat niet in de definitie
/libs
, maar is vereist in de/apps
overlay/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/apps
overlay/override.-
Het corresponderende knooppunt maken binnen
/apps
-
De overeenkomende eigenschap op dit knooppunt maken (onder /
apps
)-
Het bezit zal een prioriteit hebben 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
/libs
wordt gebruikt, wordt het type eigenschap dat u definieert gebruikt.
-
NOTEHet 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/libs
staat, wordt gerespecteerd. Als u een bedekking/overschrijving wilt toepassen, moet u het knooppunt opnieuw maken in/apps
, moet u de eigenschap expliciet verbergen en opnieuw definiëren:-
Maak het corresponderende knooppunt onder
/apps
met het gewenstejcr:primaryType
-
Maak de eigenschap
sling:hideProperties
op dat knooppunt, met de waarde ingesteld op die van de eigenschap auto-created, bijvoorbeeldjcr:primaryType
Deze eigenschap, gedefinieerd onder
/apps
, krijgt nu voorrang op 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)
- Eigenschappen opnieuw definiëren
-
-
verberg een bezit
De eigenschap wordt gedefinieerd in
/libs
, maar is niet vereist in de/apps
overlay/overschrijving.-
Het corresponderende knooppunt maken binnen
/apps
-
Maak een eigenschap
sling:hideProperties
van het typeString
ofString[]
. Met deze optie geeft u de eigenschappen op 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 eigenschappen ervan 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 of genegeerd
Jokerteken* kan worden gebruikt om alle onderliggende knooppunten te verbergen/te negeren.
- type:
-
-
opnieuw ordenen knopen
Het knooppunt en de knooppunten op hetzelfde niveau worden gedefinieerd in
/libs
. Een nieuwe positie is vereist, zodat het knooppunt opnieuw wordt gemaakt in de/apps
overlay/overschrijving, waarbij de nieuwe positie wordt gedefinieerd ten opzichte van het desbetreffende knooppunt op hetzelfde niveau in/libs
.-
Gebruik de eigenschap
sling:orderBefore
:-
Het corresponderende knooppunt maken onder
/apps
-
Maak de eigenschap
sling:orderBefore
:This specifies the node (as in
/libs
) that the current node should be positioned before:- type:
String
- value:
<before-SiblingName>
- type:
-
-
Het aanroepen van de Verschuivende Fusie van het Middel van uw code
De samenvoeging van het Verspreide Middel omvat twee leveranciers van douanemiddel - voor bekledingen en een andere voor met voeten treedt. Elk van deze kan binnen uw code worden aangehaald door een koppelingspunt te gebruiken:
/libs
moet worden herhaald).-
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 gebruik
Enkele voorbeelden worden behandeld:
-
Bedekking:
-
Overschrijven: