Ограничьте компоненты в AEM 5.6.1

Как я могу ограничить компоненты в AEM 5.6.1, которые могут использоваться в определенных парах шаблона без выбора их в режиме разработки?

Ответ 1

В CRXDE под /etc/designs/[your design]/jcr:content вы можете определить узлы для представления каждого из ваших шаблонов и их абзацев и указать разрешенные компоненты для каждого.

Формат node для каждого шаблона, который содержит node для каждого parsys (оба [nt:unstructured]).

После этого parsys node имеет sling:resourceType, определенный из foundation/components/parsys и a components свойства String[]. Например, проверьте, как определен Geometrixx: http://localhost:4502/crx/de/index.jsp#/etc/designs/geometrixx/jcr%3Acontent/contentpage/par

Затем вы можете извлечь это через VLT, который хранится в виде файла .content.xml в etc/designs/[your design].

Кроме того, вы также можете создать этот файл вручную. Например. следующее будет определять "Ваш дизайн" как разрешение по умолчанию "текст" и "изображение" на параграфе "yourParsys" "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>

Это позволяет перемещать этот файл по всем экземплярам (например, при развертывании пакета CRX), так что вам не нужно настраивать среды отдельно и какие компоненты разрешены там, где также можно управлять с помощью контроля версий.

Ответ 2

Вы можете установить свойство разрешенных родителей для компонента для ограничения использования компонента, например, allowedParents="[*/parsys]"

Ответ 3

Единственный способ, которым я могу это сделать, - создать новый компонент parsys, который просто расширяет существующий с помощью sling: resourceSuperType. Затем используйте свойство allowedParents в компоненте и укажите конкретные парсины. Наконец, используйте свой конкретный parsys на соответствующем шаблоне страницы. Я еще не пробовал этого, но сохранил идею в своем заднем кармане. Дайте мне знать, если это сработает.