限制AEM 5.6.1中的组件

时间:2014-04-24 16:50:05

标签: cq5

如何限制AEM 5.6.1中可以在模板的特定分析中使用而不在设计模式中选择它们的组件?

3 个答案:

答案 0 :(得分:13)

在CRXDE中,在/etc/designs/[your design]/jcr:content下,您可以定义节点来表示每个模板&他们的段落&列出每个允许的组件。

格式是每个模板的节点,其中包含每个parsys的节点([nt:unstructured])。

然后,parsys节点的sling:resourceType定义为foundation/components/parsyscomponents属性为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。最后在相关页面模板上使用您的特定解析。我还没有尝试过这个,但是把这个想法留在了我的后口袋里。如果有效,请告诉我。