Aprovechamiento de fragmentos de expresiones use-expression-fragments

En esta página: Aprenda a insertar y reutilizar fragmentos de expresiones en el editor de personalización, a trabajar con variables implícitas, a utilizar fragmentos dentro de bucles, a personalizar campos editables y a interrumpir la herencia en Adobe Journey Optimizer.

Al usar el editor de personalización, puede aprovechar todos los fragmentos de expresiones que se han creado o guardado en la zona protegida actual.

Un fragmento es un componente reutilizable al que se puede hacer referencia en Journey Optimizer campañas y recorridos. Esta funcionalidad permite generar previamente varios bloques de contenido personalizados que los usuarios de marketing pueden utilizar para ensamblar contenido rápidamente en un proceso de diseño mejorado. Más información sobre fragmentos

➡️ Aprenda a administrar, crear y usar fragmentos en este vídeo

Usar un fragmento de expresión use-expression-fragment

Para añadir fragmentos de expresión al contenido, siga los pasos a continuación.

NOTE
Puede añadir hasta 30 fragmentos en una entrega determinada. Los fragmentos solo se pueden anidar hasta 1 nivel.
  1. Abra editor de personalización y seleccione el botón Fragmentos en el panel izquierdo.

    La lista muestra todos los fragmentos de expresiones que se han creado o guardado como fragmentos en la zona protegida actual. Aprenda a crear fragmentos
    Se ordenan por fecha de creación: los fragmentos de expresión añadidos recientemente se muestran primero en la lista.

    También puede actualizar esta lista.

    note
    NOTE
    Si se han modificado o agregado fragmentos mientras edita el contenido, la lista se actualizará con los cambios más recientes.
  2. Coloque el cursor en la ubicación deseada en el contenido y, a continuación, haga clic en el icono + junto a un fragmento de expresión para insertar el ID de fragmento correspondiente en el editor.

    note
    NOTE
    También puede agregar fragmentos de expresiones a la sección <head> de un correo electrónico o plantilla de contenido.

    note caution
    CAUTION
    Puede agregar cualquier fragmento de Borrador o Activo al contenido. Sin embargo, no podrás activar tu recorrido o campaña si se está usando un fragmento con el estado Borrador. En el momento de la publicación del recorrido o de la campaña, los fragmentos de borrador mostrarán un error y deberá aprobarlos para poder publicarlos.
  3. Una vez agregado el ID del fragmento, si abre el fragmento de expresión correspondiente y lo edita desde la interfaz, los cambios se sincronizarán. Se propagan automáticamente a todos los recorridos o campañas en borrador o activos que contengan ese ID de fragmento.

  4. Haga clic en el botón Más acciones que está junto a un fragmento. En el menú contextual que se abre, seleccione Ver fragmento para obtener más información sobre ese fragmento. El ID de fragmento también se muestra y se puede copiar desde aquí.

  5. Puede abrir el fragmento de expresión en otra ventana para editar su contenido y propiedades, ya sea mediante la opción Abrir fragmento del menú contextual o desde el panel Información de fragmento. Obtenga información sobre cómo editar un fragmento

  6. A continuación, puede personalizar y validar el contenido como de costumbre utilizando todas las capacidades de personalización y creación de editor de personalización.

  7. En algunos casos, solo es necesario calcular las variables, por lo que es posible que desee ocultar el contenido del fragmento de expresión. Para ello, use el atributo render y configúrelo en false. Por ejemplo:

    code language-none
    Hi {{profile.person.name.firstName|fragment id='ajo:fragmentId/variantId' mode ='inline' render=false}}
    
NOTE
Si crea un fragmento de expresión que contiene varios saltos de línea y lo utiliza en el contenido SMS o push, se conservarán los saltos de línea. Por lo tanto, asegúrese de probar su mensaje SMS o push antes de enviarlo.

Uso de variables implícitas implicit-variables

Las variables implícitas mejoran la funcionalidad de fragmento existente para mejorar la eficacia en la reutilización de contenido y en los casos de uso de scripts. Los fragmentos pueden utilizar variables de entrada y crear variables de salida que se pueden utilizar en el contenido de la campaña y del recorrido.

Esta capacidad se puede utilizar, por ejemplo, para inicializar los parámetros de seguimiento de los correos electrónicos, en función de la campaña o el recorrido actual, y utilizar estos parámetros en los vínculos personalizados añadidos al contenido del correo electrónico.

Los siguientes casos de uso son posibles:

  1. Usar variables de entrada en un fragmento.

    Cuando se utiliza un fragmento en el contenido de una acción de campaña o recorrido, tiene la capacidad de aprovechar las variables que se declararon fuera del fragmento. A continuación se muestra un ejemplo:

    Podemos ver arriba que la variable utm_content está declarada en el contenido de la campaña. Cuando se usa el fragmento Bloque principal, mostrará un vínculo al que se agregará el valor del parámetro utm_content. El resultado final es: https://luma.enablementadobe.com?utm_campaign= Product_launch&utm_content= start_shopping.

  2. Usar variables de salida de un fragmento.

    Las variables calculadas o definidas dentro de un fragmento están disponibles para su uso en el contenido. En el ejemplo siguiente, un fragmento F1 declara un conjunto de variables:

    En el contenido de un correo electrónico, puede tener la siguiente personalización:

    El fragmento F1 inicializa las siguientes variables: utm_campaign y utm_content. A continuación, se adjuntan estos parámetros al vínculo del contenido del mensaje. El resultado final es: https://luma.enablementadobe.com?utm_campaign= Product_launch&utm_content= start_shopping.

NOTE
En tiempo de ejecución, el sistema expande lo que hay dentro de los fragmentos y, a continuación, interpreta el código de personalización de arriba a abajo. Teniendo esto en cuenta, se pueden lograr casos de uso más complejos. Por ejemplo, puede hacer que un fragmento F1 pase variables a otro fragmento F2 situado debajo. También puede hacer que un fragmento visual F1 pase variables a un fragmento de expresión anidado F2.

Usar fragmentos de expresión dentro de bucles fragments-in-loops

Cuando se utilizan fragmentos de expresión en bucles {{#each}}, es importante comprender cómo funciona el ámbito de variables. Los fragmentos de expresiones pueden acceder a las variables globales definidas en el contenido del mensaje, pero no pueden recibir variables específicas del bucle como parámetros.

Patrón admitido: usar variables globales global-variables-in-loops

Los fragmentos de expresiones pueden hacer referencia a variables globales que se definen fuera del fragmento, incluso cuando se llama al fragmento desde un bucle. Este es el enfoque recomendado cuando necesita utilizar fragmentos en contextos iterativos.

Ejemplo: Usar un fragmento con variables globales dentro de un bucle

En el contenido del mensaje, defina una variable global y utilice un fragmento que haga referencia a ella:

{% let globalDiscount = 15 %}

{{#each context.journey.actions.GetProducts.items as |product|}}
  <div class="product">
    <h3>{{product.name}}</h3>
    <p>Price: ${{product.price}}</p>
    {{fragment id='ajo:fragment123/variant456' mode='inline'}}
  </div>
{{/each}}

En el fragmento de expresión (fragmento123), puede hacer referencia a la variable globalDiscount:

<p class="discount-info">Save {{globalDiscount}}% on all items!</p>

Este patrón funciona porque la variable global es accesible a través del mensaje, incluso dentro de fragmentos, independientemente del contexto de bucle.

No compatible: Pasar variables de bucle como parámetros de fragmento loop-variables-limitations

No puede pasar el elemento de iteración actual (por ejemplo, product en el ejemplo anterior) como parámetro a un fragmento de expresión. El fragmento no puede tener acceso directo a variables con ámbito de bucle desde el bloque {{#each}} que lo rodea.

Ejemplo: Lo que NO funciona

{{#each context.journey.actions.GetProducts.items as |product|}}
  <!-- This will NOT work as expected -->
  {{fragment id='ajo:fragment123/variant456' mode='inline' currentProduct=product}}
{{/each}}

El fragmento no puede recibir product como parámetro y utilizarlo internamente porque no se admite el paso de parámetros para variables específicas del bucle en la implementación actual.

Soluciones recomendadas fragments-in-loops-workarounds

Cuando necesite utilizar fragmentos de expresión con datos de un bucle, tenga en cuenta los siguientes enfoques:

  1. Incluir lógica directamente en el mensaje: en lugar de usar un fragmento para lógica específica del bucle, agregue el código de personalización directamente dentro del bloque {{#each}}.

    code language-handlebars
    {{#each context.journey.actions.GetProducts.items as |product|}}
      <div class="product">
        <h3>{{product.name}}</h3>
        <p>Price: ${{product.price}}</p>
        {{#if product.price > 100}}
          <span class="premium-badge">Premium Product</span>
        {{/if}}
      </div>
    {{/each}}
    
  2. Usar fragmentos fuera de los bucles: Si el contenido del fragmento no depende del bucle, llame al fragmento antes o después del bloque de iteración.

    code language-handlebars
    {{fragment id='ajo:fragment123/variant456' mode='inline'}}
    
    {{#each context.journey.actions.GetProducts.items as |product|}}
      <div class="product">
        <h3>{{product.name}}</h3>
        <p>Price: ${{product.price}}</p>
      </div>
    {{/each}}
    
  3. Establecer varias variables globales: Si necesita pasar valores diferentes a un fragmento a través de iteraciones, establezca variables globales antes de cada llamada de fragmento (aunque esto limita la flexibilidad).

NOTE
Para iterar en datos contextuales y trabajar con bucles, consulte la guía completa sobre iterar en datos contextuales, que incluye prácticas recomendadas, sugerencias para la solución de problemas y patrones avanzados.

Personalizar campos editables customize-fields

Si se han hecho editables ciertas partes de un fragmento de expresión mediante variables, puede anular sus valores predeterminados con una sintaxis específica. Aprenda a personalizar los fragmentos

Para personalizar los campos, siga estos pasos:

  1. Inserte el fragmento en su código desde el menú Fragmentos.

  2. Utilice el código <fieldId>="<value>" al final de la sintaxis para anular el valor predeterminado de la variable.

    En el ejemplo siguiente, anulamos el valor de una variable cuyo ID es “sports” con el valor “yoga”. Esto mostrará “yoga” en el contenido del fragmento en todas partes donde se haga referencia a la variable “sport”.

Un ejemplo que muestra cómo agregar campos editables a fragmentos de expresión y anular sus valores al crear un correo electrónico está disponible en esta sección.

Usar la resolución dinámica de fragmentos dynamic-resolution

En lugar de incrustar estáticamente un ID de fragmento en tiempo de diseño, puede resolver el ID de fragmento de forma dinámica en tiempo de ejecución por destinatario. Esto permite que perfiles diferentes reciban bloques de contenido completamente diferentes dentro de la misma campaña o recorrido, según atributos de perfil, búsquedas de conjuntos de datos o datos de contexto.

Aprenda a utilizar fragmentos dinámicos

Romper herencia break-inheritance

Al agregar un ID de fragmento al editor de personalización, se sincronizan los cambios realizados en el fragmento de expresión original.

Sin embargo, también puede pegar el contenido de un fragmento de expresión en el editor. En el menú contextual, seleccione Pegar fragmento para insertar ese contenido.

En ese caso, la herencia del fragmento original se interrumpe. El contenido del fragmento se copia en el editor y los cambios ya no se sincronizan.

Se convierte en un elemento independiente que ya no está vinculado al fragmento original; puede editarlo como cualquier otro elemento del código.

AI Knowledge Reference

This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.

For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.

  • TL;DR: This page explains how to insert, customize, and manage expression fragments in the personalization editor — including implicit variables, using fragments inside loops, editable fields, dynamic resolution, and breaking inheritance.

Intents:

  • Insert an expression fragment from the Fragments menu and understand automatic change propagation
  • Use implicit variables: input variables (declared outside the fragment, used inside) and output variables (declared inside the fragment, used in surrounding message content)
  • Use expression fragments inside loops — leverage global variables for fragment access; understand the limitation on passing loop-scoped variables as parameters
  • Override editable fields in a customizable fragment using <fieldId>="<value>" syntax
  • Resolve fragment IDs dynamically at runtime based on profile attributes, dataset lookups, or context data
  • Break inheritance by pasting fragment content directly into the editor

Glossary:

  • Expression fragment: A reusable personalization expression component referenced by ID across campaigns and journeys; changes to the fragment propagate automatically to all content referencing it. (product-specific)
  • Implicit variables: Variables that extend the fragment functionality — input variables (declared in campaign/journey content, consumed inside the fragment) and output variables (declared inside the fragment, available in the surrounding message content). (product-specific)
  • Input variable: A variable declared outside the fragment (in campaign or journey content) that the fragment can reference and use internally.
  • Output variable: A variable declared or computed inside a fragment that becomes available for use in the surrounding message content after the fragment is called.
  • Editable fields: Fragment variables exposed to allow the inserting user to override default values using <fieldId>="<value>" syntax, without editing the fragment source. (product-specific)
  • Dynamic fragment resolution: The ability to resolve a fragment ID at runtime (based on profile attributes, dataset lookups, or context data) rather than embedding a static fragment ID at design time. (product-specific)
  • Break inheritance: Using “Paste fragment” from the contextual menu copies the fragment’s content into the editor as a standalone element that no longer synchronizes with the original fragment. (product-specific)

Guardrails:

  • Maximum 30 fragments can be added in a given delivery.
  • Fragments can only be nested up to 1 level.
  • A journey or campaign cannot be activated or published if it contains a fragment with Draft status; draft fragments must be approved before publication.
  • Expression fragments cannot receive loop-scoped variables (the current {{#each}} iteration item) as parameters — this is a known limitation. Use global variables or inline logic as a workaround.
  • If a fragment containing multiple line breaks is used in SMS or push content, line breaks are preserved; test the content before sending.

Terminology:

  • Canonical name: expression fragment — variants: fragment, expression fragment
  • Synonyms: “fragment ID” = the identifier used to reference the fragment in expressions
  • Do not confuse: inserting a fragment by ID (referenced; changes propagate automatically to all content) ≠ breaking inheritance / paste fragment (content copied into editor; standalone element, no longer linked to original)
  • Do not confuse: input variables (declared outside the fragment, consumed inside) ≠ output variables (declared inside the fragment, consumed outside in surrounding message content)
  • Do not confuse: Draft fragment (can be added to content but blocks journey/campaign publication until approved) ≠ Live fragment (fully published; safe for active journeys and campaigns)

FAQ:

  • Q: How many fragments can be added in a single delivery? — Up to 30 fragments.
  • Q: Can fragments be nested inside other fragments? — Yes, but only up to 1 level of nesting.
  • Q: What happens if I use a Draft fragment in a journey or campaign? — You can add a Draft fragment to content, but you cannot activate or publish the journey or campaign until the fragment is approved and its status changes to Live.
  • Q: Can an expression fragment receive the current loop item (e.g., product in {{#each}}) as a parameter? — No. Expression fragments cannot receive loop-scoped variables as parameters. Use global variables declared outside the loop (which the fragment can access), or include the personalization logic directly within the loop instead of using a fragment.
  • Q: What is breaking inheritance and when should I use it? — Breaking inheritance means using “Paste fragment” from the contextual menu to copy the fragment’s content directly into the editor. The pasted content becomes a standalone element that no longer synchronizes with the original fragment — use this when you need to customize the content beyond what editable fields allow, knowing future changes to the original fragment will not propagate to this copy.
recommendation-more-help
journey-optimizer-help