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
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.
È possibile impostare la proprietà genitori consentita per il componente di limitare in cui un componente è utilizzato ad esempio, allowedParents="[*/parsys]"
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.
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
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
@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