Superposiciones overlays
Adobe Experience Manager AEM (), y antes de eso, CQ, ha usado el principio de superposiciones por mucho tiempo para permitirle ampliar y personalizar las consolas y otras funcionalidades (por ejemplo, creación de páginas).
Superposición es un término que se utiliza en muchos contextos. AEM En este contexto (ampliación de la funcionalidad), una superposición significa 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 mantiene en /libs
y se recomienda definir la superposición (personalizaciones) en la rama /apps
. AEM utiliza una ruta de búsqueda para encontrar un recurso, buscando primero la rama /apps
y, a continuación, la rama /libs
(la ruta de búsqueda se puede configurar). Este mecanismo significa que la superposición (y las personalizaciones definidas) tienen 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 y posteriores: para superposiciones relacionadas con Granite (es decir, la IU táctil)
-
Método
-
Reconstruir la estructura
/libs
adecuada en/apps
.Esto no requiere una copia 1:1; se usa la fusión de recursos de Sling para hacer referencia a las definiciones originales que se requieren. La fusión de recursos de Sling proporciona servicios para acceder y combinar recursos con mecanismos de diferencia.
-
En
/apps
, realice cualquier cambio.
-
-
Ventajas
- Más seguro para los cambios en
/libs
. - Redefina solo lo que sea necesario.
- Más seguro para los cambios en
-
-
AEM Superposiciones y superposiciones que no son de Granite antes de la versión 6 0
-
Método
-
Copiar el contenido de
/libs
a/apps
Copie toda la subrama, incluidas las propiedades.
-
En
/apps
, realice cualquier cambio.
-
-
Desventajas
- Aunque los cambios no se perderán cuando algo cambie en
/libs
, es posible que tenga que volver a crear ciertos cambios que se producen en la superposición en/apps
.
- Aunque los cambios no se perderán cuando algo cambie en
-
Las superposiciones son el método recomendado para muchos cambios, como configurar las consolas o crear la categoría de selección en el explorador de recursos del panel lateral (utilizado al crear páginas). Se requieren como sigue:
-
No realice cambios en la rama
/libs
Cualquier cambio que realice podría perderse, ya que esta rama puede cambiar siempre que haga lo siguiente:- actualice en su instancia
- aplicar una revisión
- instalación de un paquete de funciones
-
Concentran los cambios en una ubicación, lo que facilita el seguimiento, la migración, la copia de seguridad o la depuración de los cambios, según sea necesario.
Configuración de las rutas de búsqueda configuring-the-search-paths
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 Resolver según se define en la configuración OSGi para la fábrica de Apache Sling Resource Resolver.
- El orden descendente de las rutas de búsqueda indica sus respectivas prioridades.
- En una instalación estándar, los valores predeterminados principales son
/apps
,/libs
, por lo que el contenido de/apps
tiene una prioridad mayor que la de/libs
(es decir, lo superpone).
-
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).
code language-none 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, para añadir /etc a)
code language-none PID = org.apache.sling.servlets.resolver.SlingServletResolver servletresolver.paths=["/bin/","/libs/","/apps/","/etc/","/system/","/index.servlet","/login.servlet","/services/"]
Ejemplo de uso example-of-usage
Algunos ejemplos se tratan cuando: