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 fragmentos de contenido.
Administración de recursos y Personalización y ampliación de recursos para obtener más información sobre los recursos estándar.
Lo básico partes constitutivas de un fragmento de contenido son:
Según el tipo de fragmento, también se utilizan modelos o plantillas:
Modelos de fragmento de contenido Se recomiendan para crear todos los fragmentos nuevos.
Los modelos de fragmentos de contenido se utilizan para todos los ejemplos en WKND.
AEM Antes de la versión 6.3, los fragmentos de contenido se creaban en función de plantillas en lugar de modelos.
Las plantillas de fragmento de contenido ya no se utilizan. Todavía se pueden utilizar para crear fragmentos, pero se recomienda utilizar Modelos de fragmentos de contenido en su lugar. No se agregarán nuevas funciones a las plantillas de fragmento y se eliminarán en una versión futura.
Modelos de fragmento de contenido:
Cualquier cambio en un modelo de fragmento de contenido existente puede afectar a los fragmentos dependientes, lo que puede generar propiedades huérfanas en esos fragmentos.
Plantillas de fragmentos de contenido:
La administración de fragmentos de contenido (CFM) forma parte de AEM Assets como:
Los fragmentos de contenido con contenido estructurado (es decir, basados en un modelo de fragmento de contenido) se asignan a un único recurso:
Todo el contenido se almacena en jcr:content/data
nodo del recurso:
Los datos del elemento se almacenan en el subnodo principal:
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
el jcr:content/data/master
Los metadatos y el contenido asociado se almacenan a continuación jcr:content/metadata
Excepto el título y la descripción, que no se consideran metadatos tradicionales y se almacenan en
jcr:content
Los fragmentos de contenido simples (basados en una plantilla) se asignan a un compuesto que consta de un recurso principal y de subrecursos (opcionales):
Toda la información sin contenido de un fragmento (como título, descripción, metadatos, estructura) se administra exclusivamente en el recurso principal.
El contenido del primer elemento de un fragmento se asigna a la representación original del recurso principal.
Los elementos adicionales (si existen) se asignan a subrecursos del recurso principal.
Al igual que con los recursos estándar, un fragmento de contenido se encuentra en:
/content/dam
Para obtener más información, consulte Fragmento de contenido: Eliminar consideraciones.
El Componente principal de fragmento de contenido ahora se recomienda. Consulte Desarrollo de componentes principales para obtener más información.
AEM Se puede hacer referencia a los fragmentos de contenido desde páginas de recursos de la misma manera que desde cualquier otro tipo de recurso. AEM proporciona el Fragmento de contenido componente principal - a que le permite incluir fragmentos de contenido en las páginas. También puede ampliar, esto Fragmento de contenido componente principal.
El componente utiliza el fragmentPath
para hacer referencia al fragmento de contenido real. El fragmentPath
La propiedad de se gestiona de la misma manera que propiedades similares de otros tipos de recursos; por ejemplo, cuando el fragmento de contenido se mueve a otra ubicación.
El componente le permite seleccionar la variación que se va a mostrar.
Además, se puede seleccionar un rango de párrafos para restringir la salida; por ejemplo, esto se puede utilizar para la salida de varias columnas.
El componente permite 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:
Modelo de fragmento de contenido:
Al utilizar un fragmento de contenido basado en un modelo de fragmento de contenido en una página, se hace referencia al modelo. Esto significa que si el modelo no se ha publicado en el momento de publicar la página, se marcará y el modelo se agregará a los recursos que se publicarán con la página.
Plantilla de fragmento de contenido:
Al utilizar un fragmento de contenido basado en una plantilla de fragmento de contenido en una página, no hay ninguna referencia porque la plantilla se copió al crear el fragmento.
La implementación back-end de fragmentos de contenido es, por ejemplo, responsable de hacer que las instancias de un fragmento utilizado en una página se puedan buscar o de administrar el contenido de medios mixtos. Esta implementación necesita saber qué componentes se utilizan para procesar fragmentos y cómo se parametriza el procesamiento.
Los parámetros para esto se pueden configurar en Consola web, para el paquete OSGi Configuración del componente Fragmento de contenido.
Tipos de recursos
Una lista de
sling:resourceTypes
se puede proporcionar para definir los componentes que se utilizan para procesar fragmentos de contenido y a los que se debe aplicar el procesamiento en segundo plano.
Propiedades de referencia
Se puede configurar una lista de propiedades para especificar dónde se almacena la referencia al fragmento para el componente respectivo.
No hay asignación directa entre la propiedad y el tipo de componente.
AEM Simplemente toma la primera propiedad que se pueda encontrar en un párrafo. Por lo tanto, debe elegir las propiedades cuidadosamente.
Sigue habiendo algunas directrices que debe seguir para asegurarse de que el componente es compatible con el procesamiento en segundo plano del fragmento de contenido:
El nombre de la propiedad donde se definen los elementos que se van a procesar debe ser el siguiente element
o elementNames
.
El nombre de la propiedad donde se define la variación que se va a procesar debe ser el siguiente variation
o variationName
.
Si se admite la salida de varios elementos (utilizando elementNames
para especificar varios elementos), el modo de visualización real se define mediante la propiedad displayMode
:
singleText
(y solo hay un elemento configurado), el elemento se procesa como texto con contenido intermedio, compatibilidad de diseño, etc. Esta es la opción predeterminada para los fragmentos en los que solo se procesa un elemento.Si el fragmento se procesa para displayMode
== singleText
(implícita o explícitamente) entran en juego las siguientes propiedades adicionales:
paragraphScope
define si se deben representar todos los párrafos o solo un rango de párrafos (valores: all
frente a range
)
if paragraphScope
== range
luego la propiedad paragraphRange
define el intervalo de párrafos que se procesarán
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:
se encuentran bajo diferentes raíces lingüísticas:
/content/dam/<path>/en/<to>/<fragment>
frente a
/content/dam/<path>/de/<to>/<fragment>
pero comparten exactamente la misma ruta relativa debajo de la raíz del idioma:
/content/dam/<path>/en/<to>/<fragment>
frente a
/content/dam/<path>/de/<to>/<fragment>
Además de las rutas basadas en reglas, no hay ninguna conexión adicional 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 navegar entre las variantes de idioma.
AEM El flujo de trabajo de traducción de funciona con /content
:
Como residen los modelos de fragmento de contenido en /conf
, no se incluyen en dichas traducciones. Puede internacionalización de las cadenas de IU.
Las plantillas se copian para crear el fragmento, por lo que está implícito.
Esquemas de metadatos
Fragmentos de contenido (re)utilizar esquemas de metadatos, que se puede 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 respectivo se integra con el editor de fragmentos.
Puede utilizar la API del lado del servidor para acceder a sus fragmentos de contenido; consulte:
Se recomienda encarecidamente 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:
Plantilla de fragmento (FragmentTemplate)
Uso FragmentTemplate.createFragment()
para crear un nuevo fragmento.
Resource templateOrModelRsc = resourceResolver.getResource("...");
FragmentTemplate tpl = templateOrModelRsc.adaptTo(FragmentTemplate.class);
ContentFragment newFragment = tpl.createFragment(parentRsc, "A fragment name", "A fragment description.");
Esta interfaz representa:
Esta información puede incluir:
Acceso a datos básicos (título, descripción)
Acceda a las plantillas/modelos para los elementos del fragmento:
ElementTemplate
)Acceda a las plantillas para las variaciones del fragmento:
VariationTemplate
)Obtener contenido asociado inicial
Interfaces que representan información importante:
ElementTemplate
VariationTemplate
Fragmento de contenido (FragmentoDeContenido)
Esta interfaz le permite trabajar con un fragmento de contenido de forma abstracta.
Es muy recomendable acceder a un fragmento a través de esta interfaz. Se debe evitar cambiar la estructura del contenido directamente.
La interfaz de le proporciona los medios para lo siguiente:
Administrar datos básicos (por ejemplo, obtener nombre, obtener/establecer título/descripción)
Acceso a metadatos
Elementos de acceso:
Lista de elementos
Obtener elementos por nombre
Creación de nuevos elementos (consulte Advertencias)
Acceder a datos de elementos (consulte ContentElement
)
Variaciones de lista definidas para el fragmento
Crear nuevas variaciones globalmente
Administrar contenido asociado:
Acceder al modelo o la plantilla del fragmento
Las interfaces que representan los elementos principales de un fragmento son:
Elemento de 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 de reserva adicional específica de la implementación si la variación especificada no está disponible para un elemento)
Variación de contenido (ContentVariation)
Las tres interfaces ( ContentFragment
, ContentElement
, ContentVariation
) ampliar el Versionable
La interfaz de, que agrega funcionalidades de versiones, necesarias para los fragmentos de contenido:
Se pueden adaptar las siguientes opciones:
ContentFragment
se puede adaptar a:
Resource
: el recurso de Sling subyacente; tenga en cuenta que la actualización del recurso de Sling subyacente Resource
directamente, requiere reconstruir el ContentFragment
objeto.
Asset
- el DAM Asset
abstracción que representa el fragmento de contenido; tenga en cuenta que la actualización de la variable Asset
directamente, requiere reconstruir el ContentFragment
objeto.
ContentElement
se puede adaptar a:
ElementTemplate
- para acceder a la información estructural del elemento.FragmentTemplate
se puede adaptar a:
Resource
- el Resource
determinar el modelo al que se hace referencia o la plantilla original que se copió;
Resource
no se reflejan automáticamente en FragmentTemplate
.Resource
se puede adaptar a:
ContentFragment
FragmentTemplate
Cabe señalar que:
La API se implementa para proporcionar la funcionalidad admitida por la interfaz de usuario de.
Toda la API está diseñada para no mantener los cambios automáticamente (a menos que se indique lo contrario en el JavaDoc de la API). Por lo tanto, siempre tendrá que asignar el solucionador de recursos de la solicitud correspondiente (o el solucionador que esté utilizando).
Tareas que pueden requerir un esfuerzo adicional:
La creación o eliminación de nuevos elementos no actualiza la estructura de datos de fragmentos simples (basados en una plantilla de fragmento).
Creación de nuevas variaciones de ContentElement
no actualizará la estructura de datos (sino que los creará globalmente a partir de ContentFragment
will).
La eliminación de las variaciones existentes no actualizará la estructura de datos.
AEM Para la versión 6.5, la API del lado del cliente es interna.
Consulte lo siguiente:
filter.xml
El filter.xml
para la administración de fragmentos de contenido está configurada para que no se superponga con el paquete de contenido principal de Assets.
Se inicia una sesión de edición cuando el usuario abre un fragmento de contenido en una de las páginas del editor. La sesión de edición finaliza cuando el usuario abandona el editor seleccionando una de las siguientes opciones Guardar o Cancelar.
Los requisitos para controlar una sesión de edición son:
Los procesos involucrados son:
Inicio de una sesión
Finalizar una sesión
Se ha detenido el guardado automático.
Tras la confirmación:
Tras la reversión:
Edición
Las acciones posibles son:
Introducción de una página
Compruebe si ya hay una sesión de edición; comprobando la cookie correspondiente.
Si existe, compruebe que la sesión de edición se haya iniciado para el fragmento de contenido que se está editando en ese momento
Si no existe ninguna sesión de edición, espere al primer cambio realizado por el usuario (consulte a continuación).
Compruebe si ya se hace referencia al fragmento de contenido en una página y muestre la información adecuada si es así.
Cambio de contenido
Salir de una página
Para lograrlo, 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:
com.adobe.cq.dam.cfm.ContentFragmentManager#create
Por ejemplo:
Resource templateOrModelRsc = resourceResolver.getResource("...");
FragmentTemplate tpl = templateOrModelRsc.adaptTo(FragmentTemplate.class);
ContentFragment newFragment = tpl.createFragment(parentRsc, "A fragment name", "A fragment description.");
El intervalo de guardado automático (medido en segundos) se puede definir mediante el administrador de configuración (ConfMgr):
Nodo: <*conf-root*>/settings/dam/cfm/jcr:content
Nombre de propiedad: autoSaveInterval
Tipo: Long
Predeterminado: 600
(10 minutos); 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 equivalen a 300 segundos)
Consulte Plantillas de fragmentos de contenido para obtener información completa.
Para obtener más información, consulte lo siguiente