AEM Uso de la fusión de recursos de Sling en la using-the-sling-resource-merger-in-aem
Función purpose
La fusión de recursos de Sling proporciona servicios para acceder y combinar recursos. Proporciona mecanismos de diferencia (diferenciación) para:
-
Superposiciones de recursos usando las rutas de búsqueda configuradas.
-
Invalida los cuadros de diálogo de componentes para la interfaz de usuario táctil (
cq:dialog) mediante la jerarquía de tipo de recurso (mediante la propiedadsling:resourceSuperType).
Con la fusión de recursos de Sling, los recursos de superposición/anulación o las propiedades se combinan con los recursos/propiedades originales:
-
El contenido de la definición personalizada tiene una prioridad mayor que la del original (es decir, se superpone o lo invalida).
-
Si es necesario, properties se ha definido en la personalización para indicar cómo se utilizará el contenido combinado del original.
AEM Metas para la goals-for-aem
AEM Los objetivos para utilizar la fusión de recursos de Sling en son los siguientes:
-
asegúrese de que no se realicen cambios de personalización en
/libs. -
reduzca la estructura que se replica desde
/libs.Al utilizar la fusión de recursos de Sling, no se recomienda copiar toda la estructura de
/libs, ya que esto haría que se retuviera demasiada información en la personalización (normalmente/apps). La duplicación de información aumenta innecesariamente las posibilidades de que se produzcan problemas cuando el sistema se actualiza de alguna manera.
sling:resourceSuperType para establecer la conexión./apps, ya que la práctica recomendada en la práctica de la definición de personalizaciones en /apps es definir las invalidaciones en /libs; esto se debe a que no debe cambiar nada en ./libs./libs se sobrescribirá la próxima vez que actualice la instancia (y es posible que se sobrescriba al aplicar una revisión o un paquete de características).-
Vuelva a crear el elemento necesario (es decir, tal como existe en
/libs) en/apps -
Realizar cambios en
/apps
Propiedades properties
La combinación de recursos proporciona las siguientes propiedades:
-
sling:hideProperties(StringoString[])Especifica la propiedad o lista de propiedades que se van a ocultar.
El comodín
*oculta todo. -
sling:hideResource(Boolean)Indica si los recursos deben estar completamente ocultos, incluidos sus elementos secundarios.
-
sling:hideChildren(StringoString[])Contiene el nodo secundario o la lista de nodos secundarios que se van a ocultar. Se mantendrán las propiedades del nodo.
El comodín
*oculta todo. -
sling:orderBefore(String)Contiene el nombre del nodo del mismo nivel en el que el nodo actual debe colocarse delante de.
Estas propiedades afectan al modo en que la superposición/invalidación utiliza los recursos/propiedades correspondientes/originales (de /libs) (a menudo en /apps).
Creación de la estructura creating-the-structure
Para crear una superposición o invalidación, debe volver a crear el nodo original, con la estructura equivalente, en el destino (normalmente /apps). Por ejemplo:
-
Superposición
-
La definición de la entrada de navegación para la consola Sitios, como se muestra en el carril, se define en:
/libs/cq/core/content/nav/sites/jcr:title -
Para superponer esto, cree el siguiente nodo:
/apps/cq/core/content/nav/sitesA continuación, actualice la propiedad
jcr:titlesegún sea necesario.
-
-
Omitir
-
La definición del cuadro de diálogo táctil para la consola Textos se define en:
/libs/foundation/components/text/cq:dialog -
Para anular esto, cree el siguiente nodo, por ejemplo:
/apps/the-project/components/text/cq:dialog
-
Para crear cualquiera de estos elementos, sólo es necesario volver a crear la estructura del esqueleto. Para simplificar la recreación de la estructura, todos los nodos intermedios pueden ser del tipo nt:unstructured (no tienen que reflejar el tipo de nodo original; por ejemplo, en /libs).
Por lo tanto, en el ejemplo de superposición anterior, se necesitan los siguientes nodos:
/apps
/cq
/core
/content
/nav
/sites
/libs, ya que se mantendría demasiada información en /apps. Esto puede causar problemas cuando el sistema se actualiza de alguna manera.Casos de uso use-cases
Estas funciones, junto con las funciones estándar, permiten:
-
Agregar una propiedad
La propiedad no existe en la definición de
/libs, pero es necesaria en la superposición/invalidación de/apps.- Crear el nodo correspondiente en
/apps - Crear la nueva propiedad en este nodo "
- Crear el nodo correspondiente en
-
Redefinir una propiedad (no propiedades creadas automáticamente)
La propiedad está definida en
/libs, pero se requiere un nuevo valor en la superposición/invalidación de/apps.-
Crear el nodo correspondiente en
/apps -
Cree la propiedad coincidente en este nodo (en /
apps)-
La propiedad tendrá una prioridad basada en la configuración de Sling Resource Resolver.
-
Se admite el cambio del tipo de propiedad.
Si utiliza un tipo de propiedad distinto del utilizado en
/libs, se utilizará el tipo de propiedad definido.
-
note note NOTE Se admite el cambio del tipo de propiedad. -
-
Redefinir una propiedad creada automáticamente
De manera predeterminada, las propiedades creadas automáticamente (como
jcr:primaryType) no están sujetas a una superposición/invalidación para garantizar que se respete el tipo de nodo que se encuentra actualmente en/libs. Para imponer una superposición o invalidación, debe volver a crear el nodo en/apps, ocultar explícitamente la propiedad y redefinirla:-
Cree el nodo correspondiente en
/appscon eljcr:primaryTypedeseado -
Cree la propiedad
sling:hidePropertiesen ese nodo, con el valor establecido en la propiedad creada automáticamente; por ejemplo,jcr:primaryTypeEsta propiedad, definida en
/apps, tendrá ahora prioridad sobre la definida en/libs
-
-
Redefinir un nodo y sus elementos secundarios
El nodo y sus elementos secundarios se definen en
/libs, pero se requiere una nueva configuración en la superposición/invalidación de/apps.-
Combine las acciones de:
- Ocultar tareas secundarias de un nodo (conservando las propiedades del nodo)
- Redefinir la propiedad o las propiedades
-
-
Ocultar una propiedad
La propiedad está definida en
/libs, pero no es necesaria en la superposición/invalidación de/apps.-
Crear el nodo correspondiente en
/apps -
Crear una propiedad
sling:hidePropertiesde tipoStringoString[]. Utilice esta opción para especificar las propiedades que se ocultarán o ignorarán. También se pueden utilizar caracteres comodín. Por ejemplo:*["*"]jcr:title["jcr:title", "jcr:description"]
-
-
Ocultar un nodo y sus elementos secundarios
El nodo y sus elementos secundarios se definen en
/libs, pero no son necesarios en la superposición/invalidación de/apps.-
Cree el nodo correspondiente en /apps
-
Crear una propiedad
sling:hideResource- tipo:
Boolean - valor:
true
- tipo:
-
-
Ocultar elementos secundarios de un nodo (conservando las propiedades del nodo)
El nodo, sus propiedades y sus elementos secundarios se definen en
/libs. El nodo y sus propiedades son necesarios en la superposición/invalidación de/apps, pero algunos o todos los nodos secundarios no son necesarios en la superposición/invalidación de/apps.-
Cree el nodo correspondiente en
/apps -
Crear la propiedad
sling:hideChildren:- tipo:
String[] - value: una lista de los nodos secundarios (tal como se definen en
/libs) que se deben ocultar o omitir
El comodín * se puede usar para ocultar o ignorar todos los nodos secundarios.
- tipo:
-
-
Reordenar nodos
El nodo y sus hermanos se definen en
/libs. Se requiere una nueva posición para que el nodo se vuelva a crear en la superposición/invalidación de/apps, donde la nueva posición se define en referencia al nodo del mismo nivel apropiado en/libs.-
Usar la propiedad
sling:orderBefore:-
Cree el nodo correspondiente en
/apps -
Crear la propiedad
sling:orderBefore:Esto especifica el nodo (como en
/libs) antes del cual se debe colocar el nodo actual:- tipo:
String - valor:
<before-SiblingName>
- tipo:
-
-
Invocar la fusión de recursos de Sling desde el código invoking-the-sling-resource-merger-from-your-code
La fusión de recursos de Sling incluye dos proveedores de recursos personalizados: uno para superposiciones y otro para invalidaciones. Cada uno de ellos se puede invocar dentro del código utilizando un punto de montaje:
/libs).-
Superposición:
-
objetivo: combinar recursos en función de su ruta de búsqueda
-
punto de montaje:
/mnt/overlay -
uso:
mount point + relative path -
ejemplo:
getResource('/mnt/overlay' + '<relative-path-to-resource>');
-
-
Anular:
-
objetivo: combinar recursos en función de su supertipo
-
punto de montaje:
/mnt/overide -
uso:
mount point + absolute path -
ejemplo:
getResource('/mnt/override' + '<absolute-path-to-resource>');
-
Ejemplo de uso example-of-usage
Se tratan algunos ejemplos: