AEM (y antes de eso, CQ) ha utilizado durante mucho tiempo el principio de las superposiciones para permitirle ampliar y personalizar el consolas y otras funcionalidades (por ejemplo, creación de páginas).
Superposición es un término que se puede utilizar en muchos contextos. AEM En este contexto (ampliar el intervalo de fechas), una superposición implica tomar la funcionalidad predefinida e imponer sus propias definiciones sobre ella (para personalizar la funcionalidad estándar).
En una instancia estándar, la funcionalidad predefinida se encuentra en /libs
y se recomienda definir la superposición (personalizaciones) en /apps
Rama. AEM utiliza una ruta de búsqueda para encontrar un recurso. Primero busca en el /apps
y luego la /libs
rama (la se puede configurar la ruta de búsqueda). Este mecanismo significa que la superposición (y las personalizaciones definidas) tendrán prioridad.
AEM Desde la versión 6.0, se han realizado cambios en la implementación y el uso de las superposiciones:
AEM 6,0 en adelante: para GraniteSuperposiciones relacionadas con (es decir, la interfaz de usuario táctil)
Método
Reconstruya el adecuado /libs
estructura bajo /apps
.
Esto no requiere una copia 1:1, el Fusión de recursos de Sling se utiliza para hacer referencia a las definiciones originales que son necesarias. La fusión de recursos de Sling proporciona servicios para acceder y combinar recursos mediante mecanismos de diferencia.
Realice cualquier cambio en /apps
.
Ventajas
/libs
.AEM Superposiciones y superposiciones que no son de Granite anteriores a la versión 6.0 de la
Método
Copie el contenido de /libs
hasta /apps
Debe copiar toda la subrama, incluidas las propiedades.
Realice cualquier cambio en /apps
.
Desventajas
/libs
, es posible que tenga que volver a crear ciertos cambios que se producen en la superposición en /apps
.El Fusión de recursos de Sling y los métodos relacionados solo se pueden utilizar con Granite. Esto significa que la creación de una superposición con una estructura de esqueleto solo es adecuada para la IU táctil estándar.
Las superposiciones de otras áreas (incluida la IU clásica) implican copiar el nodo adecuado y toda la subestructura y, a continuación, realizar los cambios necesarios.
Las superposiciones son el método recomendado para muchos cambios, como configuración de las consolas o creación de la categoría de selección en el explorador de recursos del panel lateral (se utiliza al crear páginas). Se requieren como sigue:
Usted no debe realice cambios en la /libs
ramificación Cualquier cambio que realice podría perderse, ya que esta rama puede cambiar siempre que haga lo siguiente:
Concentran los cambios en una ubicación, lo que facilita el seguimiento, la migración, la realización de copias de seguridad o la depuración de los cambios según sea necesario.
En el caso de las superposiciones, el recurso enviado es un agregado de los recursos y las propiedades recuperados, según las rutas de búsqueda que se puedan definir:
El recurso Ruta de búsqueda de resolución tal como se define en la Configuración de OSGi para el Apache Sling Resource Resolver Factory.
/apps
, /libs
- así que el contenido de /apps
tiene una prioridad mayor que la de /libs
(es decir, it superposiciones it).Dos usuarios del servicio necesitan acceso JCR:READ a la ubicación donde se almacenan los scripts. Estos usuarios son: components-search-service (utilizado por los componentes com.day.cq.wcm.core access/cache) y sling-scripting (utilizado por org.apache.sling.servlets.resolver para buscar servlets).
La siguiente configuración también debe configurarse según dónde coloque los scripts (en este ejemplo, en /etc, /libs o /apps).
PID = org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl
resource.resolver.searchpath=["/etc","/apps","/libs"]
resource.resolver.vanitypath.whitelist=["/etc/","/apps/","/libs/","/content/"]
Finalmente, también se debe configurar el Servlet Resolver (en este ejemplo también para añadir /etc)
PID = org.apache.sling.servlets.resolver.SlingServletResolver
servletresolver.paths=["/bin/","/libs/","/apps/","/etc/","/system/","/index.servlet","/login.servlet","/services/"]
Algunos ejemplos se tratan cuando: