En Adobe Experience Manager as a Cloud Service, un fragmento de contenido amplía un recurso estándar; consulte:
Creación y administración de fragmentos de contenido y Creación de páginas con fragmentos de contenido para obtener más información sobre los fragmentos de contenido.
Administración de recursos para obtener más información sobre los recursos estándar.
La partes constitutivas de un fragmento de contenido son:
Los fragmentos de contenido individuales se basan en modelos de fragmento de contenido:
Los modelos de fragmento de contenido definen la estructura de un fragmento de contenido cuando se crea.
Un fragmento hace referencia al modelo; por lo tanto, los cambios en el modelo pueden/afectarán a cualquier fragmento dependiente.
Los modelos son tipos de datos integrados.
Las funciones para agregar nuevas variaciones, etc., deben actualizar el fragmento en consecuencia.
Para poder mostrar o procesar un fragmento de contenido, la cuenta debe tener read
permisos para el modelo.
Cualquier cambio en un modelo de fragmento de contenido existente puede afectar a los fragmentos dependientes; esto puede llevar a propiedades huérfanas en esos fragmentos.
La administración de fragmentos de contenido (CFM) forma parte de AEM Assets como:
Los fragmentos de contenido se consideran una función de sitios como:
Los fragmentos de contenido, basados en un modelo de fragmento de contenido, se asignan a un único recurso:
Todo el contenido se almacena dentro de la variable jcr:content/data
nodo del recurso:
Los datos del elemento se almacenan en el subnodo maestro:
jcr:content/data/master
Las variaciones se almacenan en un subnodo que lleva el nombre de la variación: por ejemplo, jcr:content/data/myvariation
Los datos de cada elemento se almacenan en el subnodo respectivo como una propiedad con el nombre del elemento: por ejemplo, el contenido del elemento text
se almacena como propiedad text
en jcr:content/data/master
A continuación se almacenan los metadatos y el contenido asociado jcr:content/metadata
Excepto el título y la descripción, que no se consideran metadatos tradicionales y se almacenan en
jcr:content
Al igual que con los recursos estándar, un fragmento de contenido se mantiene en:
/content/dam
Para obtener más información, consulte Fragmento de contenido: Eliminar consideraciones.
Para integrar con Assets core:
La función Administración de fragmentos de contenido (CFM) se basa en el núcleo de recursos.
CFM proporciona sus propias implementaciones para los elementos de las vistas de tarjeta, columna o lista; estos complementos en las implementaciones de renderización de contenido de Assets existentes.
Se han ampliado varios componentes de Assets para adaptarse a los fragmentos de contenido.
La variable El componente Fragmento de contenido forma parte de los componentes principales. Consulte Desarrollo de componentes principales para obtener más información.
Se puede hacer referencia a los fragmentos de contenido desde AEM páginas, igual que a cualquier otro tipo de recurso. AEM proporciona la variable Componente principal del fragmento de contenido - componente que permite incluir fragmentos de contenido en las páginas. También puede ampliar esta Fragmento de contenido componente principal.
El componente utiliza la variable fragmentPath
para hacer referencia al fragmento de contenido real. La variable fragmentPath
la propiedad se gestiona de la misma manera que las propiedades similares de otros tipos de recursos; por ejemplo, cuando el fragmento de contenido se mueve a otra ubicación.
El componente permite seleccionar la variación que se va a mostrar.
Además, se puede seleccionar un rango de párrafos para restringir el resultado; por ejemplo, esto se puede utilizar para la salida de varias columnas.
El componente permite el contenido intermedio:
Aquí el componente le permite colocar otros recursos (imágenes, etc.) entre los párrafos del fragmento al que se hace referencia.
Para el contenido intermedio, debe:
ser conscientes de la posibilidad de referencias inestables; el contenido intermedio (añadido al crear una página) no tiene relación fija con el párrafo al que está colocado, insertando un nuevo párrafo (en el editor de fragmentos de contenido) antes de que la posición del contenido intermedio pueda perder la posición relativa
tenga en cuenta los parámetros adicionales (como los filtros de variación y de párrafo) para configurar lo que se representa en la página
Modelo de fragmento de contenido:
Cuando se utiliza un fragmento de contenido en una página, se hace referencia al modelo de fragmento de contenido en el que se basa.
Esto significa que si el modelo no se ha publicado en el momento de publicar la página, se marcará y el modelo se añadirá a los recursos que se publicarán con la página.
Los fragmentos de contenido se pueden integrar con:
Traducciones
Los fragmentos de contenido están totalmente integrados con el AEM flujo de trabajo de traducción. A nivel arquitectónico, esto significa:
Las traducciones individuales de un fragmento de contenido son en realidad fragmentos independientes; por ejemplo:
están situadas bajo diferentes raíces lingüísticas; pero comparta exactamente la misma ruta relativa debajo de la raíz del idioma correspondiente:
/content/dam/<path>/en/<to>/<fragment>
vs.
/content/dam/<path>/de/<to>/<fragment>
Además de las rutas basadas en reglas, no hay más conexión entre las distintas versiones de idioma de un fragmento de contenido; se gestionan como dos fragmentos independientes, aunque la interfaz de usuario proporciona los medios para desplazarse entre las variantes de idioma.
El flujo de trabajo de traducción AEM funciona con /content
:
/conf
, no se incluyen en dichas traducciones. Puede internacionalizar las cadenas de la interfaz de usuario.Esquemas de metadatos
Los fragmentos de contenido (re)utilizan la variable esquemas de metadatos, que se pueden definir con recursos estándar.
CFM proporciona su propio esquema específico:
/libs/dam/content/schemaeditors/forms/contentfragment
esto se puede ampliar si es necesario.
El formulario de esquema correspondiente se integra con el editor de fragmentos.
Puede utilizar la API del lado del servidor para acceder a los fragmentos de contenido; consulte:
Se recomienda utilizar la API del lado del servidor en lugar de acceder directamente a la estructura de contenido.
Las tres interfaces siguientes pueden servir como puntos de entrada:
Fragmento de contenido (Fragmento de contenido)
Esta interfaz le permite trabajar con un fragmento de contenido de forma abstracta.
La interfaz le proporciona los medios para:
Administrar datos básicos (por ejemplo, obtener nombre; get/set title/description)
Acceso a metadatos
Acceder a elementos:
Elementos de lista
Obtener elementos por nombre
Crear nuevos elementos (consulte Advertencias)
Acceso a datos de elementos (consulte ContentElement
)
Variaciones de lista definidas para el fragmento
Crear nuevas variaciones globalmente
Administrar contenido asociado:
Acceso al modelo del fragmento
Las interfaces que representan los elementos principales de un fragmento son:
Elemento Contenido (ContentElement)
Obtener datos básicos (nombre, título, descripción)
Obtener/Establecer contenido
Variaciones de acceso de un elemento:
ContentVariation
)Método abreviado para resolver variaciones (aplicar alguna lógica adicional de reserva específica de implementación si la variación especificada no está disponible para un elemento)
Variación de contenido (ContentVariation)
Las tres interfaces ( ContentFragment
, ContentElement
, ContentVariation
) amplíe el Versionable
interfaz, que añade funciones de versiones, necesarias para los fragmentos de contenido:
Se puede adaptar lo siguiente:
ContentFragment
puede adaptarse a:
Resource
- el recurso Sling subyacente; actualizar el subyacente Resource
directamente requiere la reconstrucción del ContentFragment
objeto.
Asset
- DAM Asset
abstracción que representa el fragmento de contenido; actualizar el Asset
directamente requiere la reconstrucción del ContentFragment
objeto.
ContentElement
puede adaptarse a:
ElementTemplate
- para acceder a la información estructural del elemento.Resource
puede adaptarse a:
ContentFragment
Cabe señalar que:
Toda la API está diseñada para not persista los cambios automáticamente (a menos que se indique lo contrario en el JavaDoc de API). Por lo tanto, siempre tendrá que confirmar la resolución del recurso de la solicitud correspondiente (o la resolución que esté utilizando).
Tareas que pueden requerir un esfuerzo adicional:
Se recomienda crear nuevas variaciones a partir de ContentFragment
. Esto garantiza que todos los elementos compartan esta variación y que las estructuras de datos globales apropiadas se actualicen según sea necesario para reflejar la variación recién creada en la estructura de contenido.
Eliminación de variaciones existentes a través de un elemento mediante ContentElement.removeVariation()
, no actualizará las estructuras de datos globales asignadas a la variación. Para garantizar que estas estructuras de datos se mantengan sincronizadas, utilice ContentFragment.removeVariation()
en su lugar, que elimina una variación globalmente.
La API del lado del cliente es interna.
Consulte lo siguiente:
filter.xml
La variable filter.xml
para la administración de fragmentos de contenido está configurada de modo que no se superponga con el paquete de contenido principal de Assets.
Tenga en cuenta esta información de antecedentes. Aquí no se supone que se cambie nada (ya que está marcado como zona privada en el repositorio), pero en algunos casos podría ayudar a comprender cómo funcionan las cosas bajo el capó.
La edición de un fragmento de contenido, que puede abarcar varias vistas (= páginas de HTML), es atómica. Como estas funciones de edición atómica de varias vistas no son un concepto AEM típico, los fragmentos de contenido utilizan lo que se denomina una editar sesión.
Una sesión de edición se inicia cuando el usuario abre un fragmento de contenido en el editor. La sesión de edición finaliza cuando el usuario abandona el editor seleccionando una de las opciones siguientes: Guardar o Cancelar.
Técnicamente, todas las ediciones se realizan en live contenido, igual que con el resto de la edición AEM. Cuando se inicia la sesión de edición, se crea una versión del estado actual sin editar. Si un usuario cancela una edición, se restaura esa versión. Si el usuario hace clic en Guardar, no se hace nada específico, ya que toda la edición se ejecutó en live contenido, por lo tanto todos los cambios se mantienen ya. Además, haga clic en Guardar déclencheur el procesamiento en segundo plano (como la creación de información de búsqueda de texto completo y/o el manejo de recursos de medios mixtos).
Existen algunas medidas de seguridad para los casos extremos; por ejemplo, si el usuario intenta salir del editor sin guardar o cancelar la sesión de edición. Además, hay disponible un guardado automático periódico para evitar la pérdida de datos.
Tenga en cuenta que dos usuarios pueden editar el mismo fragmento de contenido simultáneamente y, por lo tanto, sobrescribir los cambios de los demás. Para evitarlo, el fragmento de contenido debe bloquearse aplicando la Cierre de compra en el fragmento.
Para conseguirlo, puede adaptar el recurso que representa la API a:
com.adobe.cq.dam.cfm.ContentFragment
Por ejemplo:
// first, get the resource
Resource fragmentResource = resourceResolver.getResource("/content/dam/fragments/my-fragment");
// then adapt it
if (fragmentResource != null) {
ContentFragment fragment = fragmentResource.adaptTo(ContentFragment.class);
// the resource is now accessible through the API
}
Para crear un nuevo fragmento de contenido mediante programación, debe utilizar un
FragmentTemplate
adaptado desde un recurso de modelo.
Por ejemplo:
Resource modelRsc = resourceResolver.getResource("...");
FragmentTemplate tpl = modelRsc.adaptTo(FragmentTemplate.class);
ContentFragment newFragment = tpl.createFragment(parentRsc, "A fragment name", "A fragment description.");
La variable intervalo de guardado automático (medido en segundos) se puede definir utilizando el administrador de configuración (ConfMgr):
Nodo: <conf-root>/settings/dam/cfm/jcr:content
Nombre de propiedad: autoSaveInterval
Tipo: Long
Predeterminado: 600
(10 minutos); esto se define en /libs/settings/dam/cfm/jcr:content
Si desea establecer un intervalo de guardado automático de 5 minutos, debe definir la propiedad en el nodo ; por ejemplo:
Nodo: /conf/global/settings/dam/cfm/jcr:content
Nombre de propiedad: autoSaveInterval
Tipo: Long
Valor: 300
(5 minutos equivale a 300 segundos)
Para obtener más información, consulte lo siguiente