隐藏条件可用于确定是否渲染组件资源。 例如,当模板作者在模板编辑器中配置核心组件列表组件,并决定禁用选项以基于子页面构建列表时。 在设计对话框中禁用此选项会设置一个属性,这样在渲染列表组件时,将评估隐藏条件,并且不显示显示子页面的选项。
对于用户来说,对话框可能变得非常复杂,并且有许多选项可供用户选择,用户只能使用其中一小部分选项。 这可能为用户带来无数的用户界面体验。
通过使用隐藏条件,管理员、开发人员和超级用户可以根据一组规则隐藏资源。 此功能允许他们决定在作者编辑内容时应显示哪些资源。
根据表达式隐藏资源不会替换ACL权限。 内容将保持可编辑状态,但是不显示。
com.adobe.granite.ui.components.FilteringResourceWrapper
负责根据属性的存在和值过滤 granite:hide
资源,该属性位于要过滤的字段上。/libs/cq/gui/components/authoring/dialog/dialog.jsp
的实现包括FilteringResourceWrapper.
的实例
该实现利用Granite ELResolver API并通过ExpressionCustomizer添加一个cqDesign
自定义变量。
以下是设计节点上隐藏条件的几个示例,该节点位于etc/design
下或作为内容策略。
${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}
定义隐藏表达式时,请牢记:
cqDesign.myProperty
)。隐藏条件的示例可在AEM中找到,特别是核心组件。 例如,请考虑WKND教程中实现的 列表核心组件。
使用模板编辑器,模板作者可以在设计对话框中定义页面作者可以使用的列表组件选项。例如是否允许列表为静态列表、子页面列表、标记页面列表等。 可以启用或禁用。
如果模板作者选择禁用子页面选项,则会设置设计属性并针对其评估隐藏条件,这会导致该选项不为页面作者呈现。
默认情况下,页面作者可以使用列表核心组件通过选择选项子页面来构建使用子页面的列表。
在列表核心组件的设计对话框中,模板作者可以选择选项禁用子项,以阻止将基于子页面生成列表的选项显示给页面作者。
策略节点在/conf/wknd/settings/wcm/policies/wknd/components/list
下创建,属性disableChildren
设置为true
。
隐藏条件定义为对话框属性节点/libs/core/wcm/components/list/v2/list/cq:dialog/content/items/tabs/items/listSettings/items/columns/items/column/items/listFrom/items/children
上granite:hide
属性的值
从设计配置中提取disableChildren
的值,表达式${cdDesign.disableChildren}
的计算结果为false
,这意味着该选项不会作为组件的一部分呈现。
使用列表组件时,页面作者不再呈现选项子页面。