如何限制AEM 5.6.1中可以在模板的特定分析中使用而不在设计模式中选择它们的组件?
答案 0 :(得分:13)
在CRXDE中,在/etc/designs/[your design]/jcr:content
下,您可以定义节点来表示每个模板&他们的段落&列出每个允许的组件。
格式是每个模板的节点,其中包含每个parsys的节点([nt:unstructured]
)。
然后,parsys节点的sling:resourceType
定义为foundation/components/parsys
,components
属性为String[]
。例如,查看Geometrixx的定义方式:http://localhost:4502/crx/de/index.jsp#/etc/designs/geometrixx/jcr%3Acontent/contentpage/par
然后,您可以通过VLT提取此信息,该信息将存储为.content.xml
下的etc/designs/[your design]
文件。
或者,您也可以手动创建该文件。例如。以下内容将“Your Design”定义为允许“yourTemplate”的“yourParsys”段落上的默认“text”和“image”组件。
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="cq:Page">
<jcr:content
cq:template="/libs/wcm/core/templates/designpage"
jcr:primaryType="cq:PageContent"
jcr:title="You Design">
<yourTemplate jcr:primaryType="nt:unstructured">
<yourParsys
jcr:primaryType="nt:unstructured"
sling:resourceType="foundation/components/parsys"
components="[foundation/components/text,foundation/components/image]"/>
</yourTemplate>
</jcr:content>
</jcr:root>
这允许您跨实例移动此文件(例如,在部署CRX包时),这样您就不必单独配置环境。允许哪些组件也可以通过版本控制进行管理。
答案 1 :(得分:0)
您可以为组件设置允许的父级属性,以限制组件的使用位置,例如allowedParents="[*/parsys]"
答案 2 :(得分:0)
我能想到的唯一方法是创建一个新的parsys组件,它只是使用sling:resourceSuperType扩展现有的组件。然后在组件上使用allowedParents属性并指定您的特定parsys。最后在相关页面模板上使用您的特定解析。我还没有尝试过这个,但是把这个想法留在了我的后口袋里。如果有效,请告诉我。