Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

AEM 6.2: How to allow particular components to be dragged into a parsys where parsys is included inside a component?

Avatar

Level 4

Use Case: We have an accordion component that we can drag and drop on the page(page is made using editable template). Accordion component consists of a container and inside it, we can drag accordion entries. Accordion entry has a parsys in which we can include any component but we want to restrict it to few components only.

I have tried using component  property in /etc/designs/<my-project>/jcr:content/<template>/accordionEntryParsys but it didn't work for me. I am still able to add any component inside the accordion entry parsys. Is there something I am missing?

1 Accepted Solution

Avatar

Correct answer by
Administrator

I would recommend you to use template editor for this where you can control/configure usage of component via policy configuration.

But, this is similar question asked earlier, please have a look at Setting access rights at component level and  How to restrict the parsys to specific components

//

UI solution :- https://docs.adobe.com/docs/en/aem/6-2/author/page-authoring/default-components/designmode .html#Enable/Disable Components - Touch-Optimized UI

Link:- http://stackoverflow.com/questions/23275062/restrict-the-components-in-aem-5-6-1

// Restrict the components    

    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/p ar

    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.

// How to restrict components in a particular parsys ?

  Make sure to configure the property "components" as type string[] with list of all the components.As an example for geometrixx you can refer /etc/designs/geometrixx/jcr:content/contentpage/par/@components. 



Kautuk Sahni

View solution in original post

2 Replies

Avatar

Correct answer by
Administrator

I would recommend you to use template editor for this where you can control/configure usage of component via policy configuration.

But, this is similar question asked earlier, please have a look at Setting access rights at component level and  How to restrict the parsys to specific components

//

UI solution :- https://docs.adobe.com/docs/en/aem/6-2/author/page-authoring/default-components/designmode .html#Enable/Disable Components - Touch-Optimized UI

Link:- http://stackoverflow.com/questions/23275062/restrict-the-components-in-aem-5-6-1

// Restrict the components    

    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/p ar

    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.

// How to restrict components in a particular parsys ?

  Make sure to configure the property "components" as type string[] with list of all the components.As an example for geometrixx you can refer /etc/designs/geometrixx/jcr:content/contentpage/par/@components. 



Kautuk Sahni