Verwenden von Bedingungen zum Ausblenden

Ausblendebedingungen können verwendet werden, um zu bestimmen, ob eine Komponentenressource gerendert wird oder nicht. Ein Beispiel dafür wäre, wenn ein Vorlagenautor die Kernkomponente konfiguriert Listenkomponente im Vorlageneditor und beschließt, die Optionen zum Erstellen der Liste basierend auf untergeordneten Seiten zu deaktivieren. Durch Deaktivieren dieser Option im Dialogfeld "Design"wird eine Eigenschaft so festgelegt, dass beim Rendern der Listenkomponente die Bedingung zum Ausblenden ausgewertet und die Option zum Anzeigen untergeordneter Seiten nicht angezeigt wird.

Übersicht

Dialogfelder können mit zahlreichen Optionen für den Benutzer komplex werden, der möglicherweise nur einen Bruchteil der verfügbaren Optionen verwendet. Dies kann zu überwältigenden Benutzeroberflächen-Erlebnissen führen.

Durch die Verwendung von Bedingungen zum Ausblenden können Administratoren, Entwickler und Superuser Ressourcen anhand eines Regelsatzes ausblenden. Mit dieser Funktion können sie entscheiden, welche Ressourcen angezeigt werden sollen, wenn ein Autor Inhalte bearbeitet.

HINWEIS

Das Ausblenden einer Ressource basierend auf einem Ausdruck ersetzt nicht die ACL-Berechtigungen. Der Inhalt bleibt bearbeitbar, wird jedoch nicht angezeigt.

Implementierung und Nutzungsdetails

com.adobe.granite.ui.components.FilteringResourceWrapper ist verantwortlich für das Filtern der Ressourcen basierend auf dem Vorhandensein und dem Wert der Eigenschaft granite:hide für das zu filternde Feld. Die Implementierung /libs/cq/gui/components/authoring/dialog/dialog.jsp umfasst eine Instanz von FilteringResourceWrapper.

Die Implementierung greift auf die ELResolver-API von Granite zurück und fügt über den ExpressionCustomizer eine benutzerdefinierte cqDesign-Variable hinzu.

Im Folgenden sind einige Beispiele für Bedingungen zum Ausblenden für einen Design-Knoten aufgeführt, die sich entweder unter etc/design befinden oder als Inhaltsrichtlinie vorliegen.

${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}

Beachten Sie beim Definieren Ihres Ausblendeausdrucks Folgendes:

  • Damit sie gültig ist, sollte der Umfang, in dem sich die Eigenschaft befindet, ausgedrückt werden (beispielsweise cqDesign.myProperty).
  • Werte sind schreibgeschützt.
  • Funktionen (falls erforderlich) sollten auf einen bestimmten Satz beschränkt sein, der vom Dienst bereitgestellt wird.

Beispiel

Beispiele für Bedingungen zum Ausblenden finden sich überall in AEM und insbesondere in den Kernkomponenten. Betrachten Sie beispielsweise die Listenkernkomponente.

Mit dem Vorlageneditor kann der Vorlagenautor im Design-Dialogfeld festlegen, welche Optionen der Listenkomponente dem Seitenautor zur Verfügung stehen. Optionen wie die Erlaubnis, dass die Liste eine statische Liste, eine Liste untergeordneter Seiten, eine Liste mit getaggten Seiten usw. sein soll, können aktiviert oder deaktiviert werden.

Wenn ein Vorlagenautor die Option für untergeordnete Seiten deaktiviert, wird eine Designeigenschaft festgelegt und eine Ausblendebedingung dafür ausgewertet, wodurch die Option für den Seitenautor nicht gerendert wird.

  1. Standardmäßig kann der Seitenautor die Listenkernkomponente verwenden, um eine Liste mit untergeordneten Seiten zu erstellen, indem er die Option auswählt Untergeordnete Seiten.

    chlimage_1-218

  2. Im Design-Dialogfeld der Listenkomponente können Vorlagenautoren die Option Untergeordnete Elemente deaktivieren auswählen, um zu verhindern, dass Seitenautoren eine Liste mit untergeordneten Seiten angezeigt wird.

    chlimage_1-219

  3. Ein Richtlinienknoten wird unter /conf/we-retail/settings/wcm/policies/weretail/components/content/list erstellt, wobei die Eigenschaft disableChildren auf true festgelegt wird.

  4. Die Bedingung zum Ausblenden wird als Wert der Eigenschaft granite:hide des Dialogfeldeigenschafts-Knotens /conf/we-retail/settings/wcm/policies/weretail/components/content/list definiert.

    chlimage_1-220

  5. Der Wert von disableChildren wird aus der Design-Konfiguration gezogen und der Ausdruck ${cqDesign.disableChildren} wird als false ausgewertet, was bedeutet, dass die Option nicht als Teil der Komponente gerendert wird.

    Sie können den hide-Ausdruck als Wert der Eigenschaft granite:hide hier auf GitHub ansehen.

  6. Die Option Untergeordnete Seiten wird für Seitenautoren bei Verwendung der Listenkomponente nicht mehr gerendert.

    chlimage_1-221

Auf dieser Seite