Använda Dölj villkor using-hide-conditions
Dölj villkor kan användas för att avgöra om en komponentresurs återges eller inte. Ett exempel på detta är när en mallskapare konfigurerar kärnkomponenten listkomponent i mallredigerare och bestämmer sig för att inaktivera alternativen för att skapa listan baserat på underordnade sidor. Om du inaktiverar det här alternativet i designdialogrutan anges en egenskap så att när listkomponenten återges utvärderas dolda villkor och alternativet att visa underordnade sidor inte visas.
Översikt overview
Dialogrutor kan bli mycket komplexa med många alternativ för användaren, som kanske bara använder en del av de alternativ som han/hon har till sitt förfogande. Detta kan leda till en överväldigande upplevelse av användargränssnittet.
Genom att använda dolda villkor kan administratörer, utvecklare och superanvändare dölja resurser baserat på en uppsättning regler. Med den här funktionen kan de bestämma vilka resurser som ska visas när en författare redigerar innehåll.
Implementerings- och användningsinformation implementation-and-usage-details
com.adobe.granite.ui.components.FilteringResourceWrapper
är ansvarig för att filtrera resurserna baserat på förekomsten och värdet av granite:hide
-egenskap, som finns i det fält som ska filtreras. Genomförandet av /libs/cq/gui/components/authoring/dialog/dialog.jsp
innehåller en instans av FilteringResourceWrapper.
Implementeringen utnyttjar Graniten ELResolver API och lägger till en cqDesign
egen variabel via ExpressionCustomizer.
Här är några exempel på hur du döljer villkor i en designnod som finns under etc/design
eller som en innehållsprincip.
${cqDesign.myProperty}
${!cqDesign.myProperty}
${cqDesign.myProperty == 'someText'}
${cqDesign.myProperty != 'someText'}
${cqDesign.myProperty == true}
${cqDesign.myProperty == true}
${cqDesign.property1 == 'someText' && cqDesign.property2 || cqDesign.property3 != 1 || header.myHeader}
När du definierar ditt dolda uttryck ska du tänka på:
- För att vara giltig måste det omfång i vilket egenskapen hittas uttryckas (t.ex.
cqDesign.myProperty
). - Värdena är skrivskyddade.
- Funktioner (om det behövs) bör begränsas till en viss uppsättning som tillhandahålls av tjänsten.
Exempel example
Exempel på dolda villkor finns i hela AEM och kärnkomponenter särskilt. Tänk dig till exempel listkärnkomponent.
Använda mallredigerarenkan mallskaparen i designdialogrutan definiera vilka alternativ för listkomponenten som är tillgängliga för sidförfattaren. Alternativ som om listan ska kunna vara en statisk lista, en lista med underordnade sidor, en lista med taggade sidor osv. kan aktiveras eller inaktiveras.
Om en mallskapare väljer att inaktivera alternativet för underordnade sidor, ställs en designegenskap in och ett dolt villkor utvärderas mot den, vilket gör att alternativet inte återges för sidförfattaren.
-
Som standard kan sidförfattaren använda listkärnkomponenten för att skapa en lista med underordnade sidor genom att välja alternativet Underordnade sidor.
-
I designdialogrutan för listkärnkomponenten kan mallskaparen välja alternativet Inaktivera underordnade för att förhindra att alternativet att skapa en lista baserad på underordnade sidor visas för sidförfattaren.
-
En principnod skapas under
/conf/we-retail/settings/wcm/policies/weretail/components/content/list
med en egenskapdisableChildren
ange tilltrue
. -
Villkoret hide definieras som värdet för en
granite:hide
egenskap på egenskapsnoden dialog/conf/we-retail/settings/wcm/policies/weretail/components/content/list
-
Värdet för
disableChildren
hämtas från designkonfigurationen och uttrycket${cqDesign.disableChildren}
utvärderas tillfalse
, vilket innebär att alternativet inte återges som en del av komponenten.Du kan visa uttrycket hide som värdet för
granite:hide
property i GitHub här. -
Alternativet Underordnade sidor återges inte längre för sidförfattaren när listkomponenten används.