Het gebruiken van de Verschuivende Fusie van het Middel in AEM 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 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 goals-for-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 properties
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 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 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 use-cases
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.
-
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/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 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 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 example-of-usage
Enkele voorbeelden worden behandeld:
-
Bedekking:
-
Overschrijven: