Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

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

abhisheknarula2
Level 2
Level 2

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
kautuk_sahni
Correct answer by
Community Manager
Community Manager

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. 

View solution in original post

2 Replies
kautuk_sahni
Correct answer by
Community Manager
Community Manager

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. 

View solution in original post