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 mediante el rutas de búsqueda configuradas.
-
Invalidaciones de cuadros de diálogo de componentes para la IU táctil (
cq:dialog
), utilizando la jerarquía de tipos de recurso (mediante la propiedad )sling: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, superposiciones o invalidaciones it).
-
Si es necesario, propiedades definida en la personalización, indique 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 realizan cambios de personalización en
/libs
. -
reducir la estructura que se duplica desde
/libs
.Al utilizar la fusión de recursos de Sling, no se recomienda copiar toda la estructura de
/libs
ya que esto conllevaría que se almacenara 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
AEM , como práctica recomendada en el uso de es definir personalizaciones en /apps
; esto se debe a que no debe cambiar nada en /libs
./libs
ruta./libs
se sobrescribe la próxima vez que actualice la instancia (y es posible que se sobrescriba al aplicar una revisión o un paquete de funciones).-
Vuelva a crear el elemento necesario (es decir, tal como existe en
/libs
) en/apps
-
Realice cualquier cambio en
/apps
Propiedades properties
La combinación de recursos proporciona las siguientes propiedades:
-
sling:hideProperties
(String
oString[]
)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
(String
oString[]
)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 a la forma en que los recursos/propiedades correspondientes/originales (de /libs
) las utiliza la superposición/anulación (a menudo en /apps
).
Creación de la estructura creating-the-structure
Para crear una superposición o sobrescritura, debe volver a crear el nodo original, con la estructura equivalente, debajo del 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/sites
Luego actualice la propiedad
jcr:title
segú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 almacenarí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:
-
Añadir una propiedad
La propiedad no existe en
/libs
definición, pero es obligatorio en la/apps
superposición/anulación.- Cree el nodo correspondiente en
/apps
- Crear la nueva propiedad en este nodo "
- Cree el nodo correspondiente en
-
Redefinir una propiedad (no propiedades creadas automáticamente)
La propiedad se define en
/libs
, pero se requiere un nuevo valor en la variable/apps
superposición/anulación.-
Cree el nodo correspondiente en
/apps
-
Cree la propiedad correspondiente 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 diferente 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 forma predeterminada, las propiedades creadas automáticamente (como
jcr:primaryType
) no están sujetos a una superposición/anulación para garantizar que el tipo de nodo actualmente en/libs
se respeta. Para imponer una superposición/anulación, debe volver a crear el nodo en/apps
, oculte explícitamente la propiedad y redefina:-
Cree el nodo correspondiente en
/apps
con el deseadojcr:primaryType
-
Creación de la propiedad
sling:hideProperties
en ese nodo, con el valor establecido en el de la propiedad creada automáticamente; por ejemplo,jcr:primaryType
Esta propiedad, definida en
/apps
, ahora tendrá prioridad sobre la definida en/libs
-
-
Redefinición de un nodo y sus tareas secundarias
El nodo y sus tareas secundarias se definen en
/libs
, pero se requiere una nueva configuración en la/apps
superposición/anulación.-
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 se define en
/libs
, pero no es obligatorio en/apps
superposición/anulación.-
Cree el nodo correspondiente en
/apps
-
Creación de una propiedad
sling:hideProperties
de tipoString
oString[]
. 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 tareas secundarias
El nodo y sus tareas secundarias se definen en
/libs
, pero no es obligatorio en/apps
superposición/anulación.-
Cree el nodo correspondiente en /apps
-
Creación de una propiedad
sling:hideResource
- tipo:
Boolean
- valor:
true
- tipo:
-
-
Ocultar tareas secundarias de un nodo (conservando las propiedades del nodo)
El nodo, sus propiedades y sus tareas secundarias se definen en
/libs
. El nodo y sus propiedades son necesarios en la variable/apps
superposición/anulación, pero algunos o todos los nodos secundarios no son obligatorios en la/apps
superposición/anulación.-
Cree el nodo correspondiente en
/apps
-
Creación de la propiedad
sling:hideChildren
:- tipo:
String[]
- value: una lista de los nodos secundarios (como se define en
/libs
) para ocultar/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/apps
superposición/anulación, donde la nueva posición se define en referencia al nodo del mismo nivel adecuado en/libs
.-
Utilice el
sling:orderBefore
propiedad:-
Cree el nodo correspondiente en
/apps
-
Creación de la propiedad
sling:orderBefore
:Esto especifica el nodo (como en
/libs
) que el nodo actual debe colocarse antes de:- 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: