2014-04-24 11 views
10

Come posso limitare i componenti in AEM 5.6.1 che possono essere utilizzati in un particolare parsys di un modello senza selezionarli in modalità progettazione?Limita i componenti in AEM 5.6.1

risposta

13

In CRXDE, sotto /etc/designs/[your design]/jcr:content, è possibile definire i nodi per rappresentare ciascuno dei vostri modelli & loro paragrafi & lista del componenti consentiti per ciascuno.

Il formato è un nodo per ogni modello che contiene un nodo per ogni parsys (entrambi [nt:unstructured]).

Il nodo parsys ha quindi un valore sling:resourceType definito da foundation/components/parsys e una proprietà String[]components. Per un esempio, verificare come quello Geometrixx è definito: http://localhost:4502/crx/de/index.jsp#/etc/designs/geometrixx/jcr%3Acontent/contentpage/par

È quindi possibile estrarre questo via VLT, che viene memorizzato sotto forma di file .content.xml sotto etc/designs/[your design].

In alternativa, è possibile creare tale file anche a mano. Per esempio. ciò che segue definirà "Il tuo progetto" come un permesso per i componenti "testo" e "immagine" predefiniti nel paragrafo "yourParsys" di "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> 

Questo permette di spostare questo file tra le istanze (ad esempio, quando si distribuisce un pacchetto CRX) in modo che non si dispone di configurare ambienti singolarmente & quali componenti sono permessi dove può anche essere gestito da versione controllo.

+0

c'è un modo per limitare quanti componenti possono essere rilasciati in 'yourParsys'? Ad esempio, voglio che uno e solo un 'foundation/components/text' sia trascinabile in esso e nient'altro. – Behrang

+1

Nessun modo semplice che ho trovato. Potresti essere in grado di sovrapporre un file JS all'interno del sidekick e fare un controllo su insert? O incorporare il componente direttamente nel modello con una casella di controllo per mostrare/nascondere. Ad essere onesti però, questi sono il tipo di cose che sono più facilmente risolte dalle linee guida editoriali rispetto allo sforzo di sviluppo. – anotherdave

+0

@Behrang Esiste, ma richiede l'override del componente di parsys predefinito OPPURE l'implementazione di un filtro di richiesta per eliminare i nodi in eccesso. Il modo giusto di gestire ciò dipenderà davvero dai requisiti del core business. – Rampant

0

È possibile impostare la proprietà genitori consentita per il componente di limitare in cui un componente è utilizzato ad esempio, allowedParents="[*/parsys]"

0

L'unico modo in cui posso pensare di farlo è creare un nuovo componente parsys che estenda semplicemente quello esistente con sling: resourceSuperType. Quindi utilizzare la proprietà allowedParents sul componente e specificare i parsys specifici. Infine usa i tuoi parsys specifici sul modello di pagina in questione. Non ho ancora provato questo, ma ho mantenuto l'idea nella mia tasca posteriore. Fammi sapere se funziona.

Problemi correlati