Desarrollo de AEM: directrices y prácticas recomendadas aem-development-guidelines-and-best-practices
Directrices para el uso de plantillas y componentes guidelines-for-using-templates-and-components
Los componentes y plantillas de Adobe Experience Manager AEM () conforman un potente conjunto de herramientas. Los desarrolladores pueden utilizarlas para proporcionar a los usuarios, editores y administradores de sitios web la funcionalidad de adaptar sus sitios web a las cambiantes necesidades comerciales (agilidad de contenido). Todo esto manteniendo el diseño uniforme de los sitios (protección de marca).
Un desafío típico para una persona responsable de un sitio web o un conjunto de sitios web (por ejemplo, en una sucursal de una empresa global) es introducir un nuevo tipo de presentación de contenido en sus sitios web.
Supongamos que es necesario agregar una página de lista de noticias a los sitios web, que enumera extractos de otros artículos ya publicados. La página debe tener el mismo diseño y estructura que el resto del sitio web.
La manera recomendada de abordar ese problema sería la siguiente:
- Reutilice una plantilla existente para poder crear un tipo de página. La plantilla define aproximadamente la estructura de la página (elementos de navegación, paneles, etc.), que se ajusta aún más por su diseño (CSS, gráficos).
- Utilice el sistema de párrafos (parsys/iparsys) en las páginas nuevas.
- Defina el derecho de acceso al modo Diseño de los sistemas de párrafos, de modo que solo las personas autorizadas (normalmente el administrador) puedan cambiarlas.
- Defina los componentes permitidos en el sistema de párrafos determinado para que los editores puedan colocar los componentes necesarios en la página. En este caso, podría ser un componente de lista, que puede atravesar un subárbol de páginas y extraer la información según reglas predefinidas.
- Los editores agregan y configuran los componentes permitidos en las páginas de las que son responsables para entregar la funcionalidad solicitada (información) a la empresa.
Esto ilustra cómo este enfoque permite a los usuarios y administradores colaboradores del sitio web responder a las necesidades comerciales rápidamente, sin requerir la participación de equipos de desarrollo. Los métodos alternativos, como la creación de una plantilla, suelen ser un ejercicio costoso, que requiere un proceso de gestión del cambio y la participación del equipo de desarrollo. Esto hace que todo el proceso sea más largo y costoso.
AEM Por lo tanto, los desarrolladores de sistemas basados en el uso de deben utilizar:
- plantillas y control de acceso al diseño del sistema de párrafos para la uniformidad y la protección de la marca
- sistema de párrafos, incluidas sus opciones de configuración para una mayor flexibilidad.
Las siguientes reglas generales para desarrolladores tienen sentido en la mayoría de los proyectos habituales:
- Mantenga el número de plantillas bajo, tan bajo como el número de estructuras de página fundamentalmente diferentes en los sitios web.
- Proporcione la flexibilidad y las capacidades de configuración necesarias a los componentes personalizados.
- AEM Maximice el uso de la potencia y la flexibilidad del sistema de párrafos de la: los componentes parsys e iparsys.
Personalizar componentes y otros elementos customizing-components-and-other-elements
Al crear sus propios componentes o personalizar un componente existente, a menudo es más fácil (y seguro) reutilizar las definiciones existentes. AEM Los mismos principios se aplican también a otros elementos dentro de la aplicación de, por ejemplo, el controlador de errores.
Esto se puede hacer copiando y superponiendo la definición existente. En otras palabras, copiando la definición de /libs
a /apps/<your-project>
. Esta nueva definición, en /apps
, se puede actualizar según sus necesidades.
Por ejemplo:
-
Esto implicaba superponer una definición de componente:
-
Cree una carpeta de componentes en
/apps/<website-name>/components/<MyComponent>
copiando un componente existente:-
Por ejemplo, para personalizar la copia del componente Texto:
- de
/libs/foundation/components/text
- hasta
/apps/myProject/components/text
- de
-
-
-
Personalizar páginas mostradas por el Controlador de errores
Este caso implica la superposición de un servlet:
-
En el repositorio, copie uno o más scripts predeterminados:
- de
/libs/sling/servlet/errorhandler/
- hasta
/apps/sling/servlet/errorhandler/
- de
-
/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).- copiar el elemento de
/libs
en/apps
- realice cualquier cambio dentro de
/apps
Cuándo utilizar Consultas JCR y cuándo no utilizarlas when-to-use-jcr-queries-and-when-not-to-use-them
Las consultas JCR son una herramienta potente cuando se utilizan correctamente. Son adecuados para:
-
consultas reales del usuario final, como búsquedas de texto completo en el contenido.
-
ocasiones en las que el contenido estructurado debe encontrarse en todo el repositorio.
En estos casos, asegúrese de que las consultas solo se ejecuten cuando sea necesario. Por ejemplo, en la activación de componentes o la invalidación de caché (a diferencia de, por ejemplo, Pasos de flujos de trabajo, Controladores de eventos que almacenan en déclencheur las modificaciones de contenido y Filtros).
Nunca utilice Consultas JCR para solicitudes de procesamiento puras. Por ejemplo, las consultas JCR no son adecuadas para lo siguiente:
- navegación de procesamiento
- información general sobre la creación de las 10 noticias más recientes
- mostrar recuentos de elementos de contenido
Para procesar contenido, utilice el acceso de navegación al árbol de contenido en lugar de realizar una consulta JCR.
Consideraciones de seguridad security-considerations
Sesiones JCR (repositorio) jcr-repository-sessions
Utilice la sesión del usuario, no la sesión administrativa. Esto significa que debe utilizar:
slingRequest.getResourceResolver().adaptTo(Session.class);
Protect con scripts en sitios múltiples (XSS) protect-against-cross-site-scripting-xss
El proceso de ejecución de scripts en sitios múltiples (XSS) permite a los atacantes insertar código en páginas web que han visto otros usuarios. Los usuarios web malintencionados pueden aprovechar esta vulnerabilidad de seguridad para evitar los controles de acceso.
AEM Se aplica el principio de filtrado de todo el contenido proporcionado por el usuario en la salida. La prevención de XSS tiene la máxima prioridad tanto durante el desarrollo como durante las pruebas.
Además, un firewall de aplicaciones web, como mod_security para Apache, puede proporcionar un control central y confiable sobre la seguridad del entorno de implementación y protegerlo contra ataques de scripts entre sitios que no se habían detectado anteriormente.
AEM La hoja de trucos de la API XSS contiene información que debe saber para utilizar la API XSS y hacer que una aplicación de sea más segura. Puede descargarlo aquí:
La hoja de trucos de XSSAPI.
Proteger la comunicación de información confidencial securing-communication-for-confidential-information
Como para cualquier aplicación de Internet, asegúrese de que al transportar información confidencial
- el tráfico está protegido mediante SSL
- Se utiliza el POST HTTP si corresponde
Esto se aplica a la información que es confidencial para el sistema (como la configuración o el acceso administrativo) y a la información confidencial para sus usuarios (como sus datos personales)
Tareas de desarrollo distintas distinct-development-tasks
Personalización de páginas de error customizing-error-pages
AEM Las páginas de error se pueden personalizar para la creación de informes de. Esto es aconsejable para que la instancia no muestre los seguimientos de sling en los errores internos del servidor.
Consulte Personalización de páginas de error mostradas por el controlador de error para obtener información detallada.
Abrir archivos en el proceso de Java™ open-files-in-the-java-process
AEM AEM Debido a que puede acceder a muchos archivos, se recomienda que el número de archivos abiertos para un proceso Java™ se configure explícitamente para su.
Para minimizar este problema, el desarrollo debe garantizar que cualquier archivo abierto se cierre correctamente cuando (de forma significativa) sea posible.