Restrict the components in AEM 5.6.1

后端 未结 3 1348
时光取名叫无心
时光取名叫无心 2020-12-06 02:32

How can I restrict the components in AEM 5.6.1 that can be used in a particular parsys of a template with out selecting them in the design mode?

相关标签:
3条回答
  • 2020-12-06 02:44

    In CRXDE, under /etc/designs/[your design]/jcr:content, you can define nodes to represent each of your templates & their paragraphs & list the allowed components for each.

    The format is a node for each template that contains a node for each parsys (both [nt:unstructured]).

    The parsys node then has a sling:resourceType defined of foundation/components/parsys and a components property of String[]. For an example, check out how the Geometrixx one is defined: http://localhost:4502/crx/de/index.jsp#/etc/designs/geometrixx/jcr%3Acontent/contentpage/par

    You could then extract this via VLT, which gets stored as a .content.xml file under etc/designs/[your design].

    Alternatively, you can create that file by hand, too. E.g. the following would define 'Your Design' as allowing default "text" and "image" components on the "yourParsys" paragraph of "yourTemplate".

    <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>
    

    This allows you to move this file across instances (e.g when deploying a CRX package) so that you don't have to configure environments individually & which components are allowed where can also be managed by version control.

    0 讨论(0)
  • 2020-12-06 02:48

    The only way I can think to do this is to create a new parsys component that simply extends the existing one with sling:resourceSuperType. Then use allowedParents property on the component and specify your specific parsys. Finally use your specific parsys on the page template in question. I have not tried this as of yet, but have kept the idea in my back pocket. Let me know if it works.

    0 讨论(0)
  • 2020-12-06 03:01

    You can set the allowed parents property for the component to restrict where a component is used e.g., allowedParents="[*/parsys]"

    0 讨论(0)
提交回复
热议问题