Magento Magento Open Source & Adobe Commerce

Añadir el GARAN-Label y el aviso de garantía legal en Magento 2

Dos tareas, dos mecanismos: un aviso para toda la tienda mediante bloque CMS y layout XML, y un GARAN-Label por producto mediante un atributo de producto. Ambos funcionan con medios nativos de Magento, tanto en Luma como en Hyvä.

A 11 de septiembre de 2026, Magento Open Source y Adobe Commerce no incluyen ninguna función nativa para el aviso de garantía legal ni para el GARAN-Label. Varias extensiones del marketplace cubren el tema. Esta página muestra cómo hacerlo con los medios de serie, para que puedas decidir si realmente necesitas una extensión. Es una recomendación basada en la situación actual del mercado, no asesoramiento legal.

Dos tareas, dos mecanismos

Aviso de garantía legal: para toda la tienda

Idéntico para todos los productos, pero distinto por idioma. En términos de Magento: un bloque CMS por store view, insertado una sola vez en el layout de la ficha de producto.

Descarga el aviso en los 24 idiomas de la UE →

GARAN-Label: por producto

Distinto para cada modelo (marca, modelo, duración de la garantía), idéntico en todos los idiomas. En términos de Magento: un atributo de producto con ámbito global, mostrado por una pequeña plantilla en la ficha de producto.

¿Cuál de los dos necesitas? →

Aviso de garantía legal: bloque CMS más layout XML

  1. En Content > Blocks, crea un bloque con el identificador legal-guarantee-notice y sube la imagen del aviso en el idioma de ese store view.
  2. Crea un bloque por idioma, todos con el mismo identificador, y asigna cada uno a los store views correspondientes. Magento resuelve el identificador por store view, así que el layout solo necesita una referencia.
  3. Inserta el bloque en la ficha de producto con una actualización de layout en tu tema:
<!-- app/design/frontend/Vendor/theme/Magento_Catalog/layout/catalog_product_view.xml -->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
  <body>
    <referenceContainer name="product.info.main">
      <block class="Magento\Cms\Block\Block" name="legal.guarantee.notice" after="product.info.overview">
        <arguments>
          <argument name="block_id" xsi:type="string">legal-guarantee-notice</argument>
        </arguments>
      </block>
    </referenceContainer>
  </body>
</page>

¿No tienes acceso al tema? El mismo resultado es posible sin código: en Content > Widgets, crea un widget de tipo «CMS Static Block», elige la actualización de layout «Catalog Product View» y un contenedor en la zona de contenido principal. Page Builder también permite editar el contenido del bloque, lo que resulta práctico si el aviso lo mantiene marketing y no desarrollo.

GARAN-Label: crear el atributo de producto

En Stores > Attributes > Product, añade un nuevo atributo con esta configuración:

Código del atributo garan_label_url En minúsculas y sin espacios. Lo referenciarás en plantillas y archivos de importación.
Tipo de entrada del catálogo Text Field Contiene la URL del PNG alojado en tu servidor. Consulta en las FAQ por qué no un Media Image.
Ámbito (scope) Global El label es neutro en cuanto al idioma: marca, modelo y duración son los mismos en todos los store views. Ámbito global significa un valor, una fila de importación por SKU.
Visible on Catalog Pages on Storefront No De lo contrario, la URL en bruto aparece en la pestaña «Más información». En su lugar, la imagen la muestras tú.
Conjunto de atributos Todos los conjuntos que contengan productos con garantía En Stores > Attributes > Attribute Set, arrastra el atributo a un grupo de cada conjunto relevante. Los productos de un conjunto sin el atributo no pueden almacenar un valor.

La decisión sobre el ámbito es la que importa en una configuración de 24 idiomas: el aviso varía por store view y vive en bloques CMS; el label es global y vive en un único atributo. Confundir esto es la fuente más habitual de problemas de importación más adelante.

Mostrar el label en la ficha de producto

Tienes tres opciones, de mayor a menor control:

  1. Plantilla más layout XML. Añade a tu tema una pequeña plantilla que muestre la imagen cuando el atributo tenga valor y referénciala en catalog_product_view.xml junto al bloque del aviso. Funciona en Luma y Hyvä; solo cambia el marcado.
  2. Page Builder o bloque CMS con un fragmento dinámico. Adecuado para el aviso; no para el label por producto, porque un bloque estático no puede leer el atributo del producto actual sin código a medida.
  3. Widget. La misma limitación que los bloques CMS para datos por producto. Vale para el aviso, no para el label.
<?php /** @var \Magento\Catalog\Block\Product\View $block */
$labelUrl = $block->getProduct()->getData('garan_label_url'); ?>
<?php if ($labelUrl): ?>
  <div class="garan-label">
    <img src="<?= $block->escapeUrl($labelUrl) ?>"
         alt="<?= $block->escapeHtmlAttr(__('Etiqueta de garantía UE (GARAN) de este producto')) ?>"
         loading="lazy" />
  </div>
<?php endif; ?>

Reglas de colocación

  • En la ficha de producto, en la zona de información cerca de la imagen y el precio del producto, no en la galería de imágenes.
  • En color y a un tamaño legible. No lo reduzcas a un icono.
  • Visible sin interacción: ni detrás de un hover, ni solo dentro de una pestaña, ni solo en una página enlazada.
  • Usa la versión PNG. Por qué PNG y no SVG →

Rellenar el atributo en masa mediante importación CSV

Con un catálogo grande no rellenas el atributo producto a producto. Genera los labels en masa, aloja los archivos PNG en tu propio servidor o CDN e importa las URL con la importación nativa de productos de Magento en System > Data Transfer > Import:

  • Tipo de entidad: Products. Comportamiento de importación: Add/Update.
  • El archivo solo necesita dos columnas: sku y garan_label_url. El resto de los datos de producto se mantiene intacto.
  • El atributo debe existir antes de la importación. Una columna de un atributo desconocido no se aplica.
sku,garan_label_url
GSR18V-55-BLUE,https://cdn.example.com/garan/bosch-gsr-18v-55.png
GSR18V-55-BLACK,https://cdn.example.com/garan/bosch-gsr-18v-55.png
DHP486Z,https://cdn.example.com/garan/makita-dhp486.png

La trampa del ámbito multi-store: si creaste el atributo con ámbito de store view, las filas sin columna store_view_code escriben solo en el ámbito predeterminado, y algunos store views pueden conservar un valor anterior. Con ámbito global, como se recomienda arriba, la columna no es necesaria y este problema no aparece.

La carga CSV de GARAN-Label te devuelve marca, modelo y URL del label por fila; cruzarlo con tu lista de SKU es un simple BUSCARV en cualquier hoja de cálculo. Cómo funciona la generación masiva y cuánto cuesta →

Caché: actualízala tras cada cambio de atributo

El clásico momento Magento: la importación termina con éxito, el admin muestra el nuevo valor y la tienda sigue sin mostrar nada. Las fichas de producto se sirven desde la caché de página completa, y una importación no las invalida de forma fiable.

  • En System > Cache Management, actualiza los tipos de caché marcados como invalidados, o
  • en la línea de comandos: bin/magento cache:clean full_page block_html, y
  • si tus indexadores funcionan en modo «Update by Schedule», espera a la ejecución del cron o lanza bin/magento indexer:reindex para los indexadores de producto.

Con Varnish o Fastly delante de la tienda, lo mismo se aplica a la caché de borde. Haz que la actualización de la caché forme parte de tu rutina de importación, no que sea una ocurrencia posterior.

Mantenerlo sincronizado: cron más API para catálogos cambiantes

Si cada semana llegan productos nuevos, el ir y venir manual con CSV cansa enseguida. La versión automatizada tiene tres partes:

  1. Un cron job selecciona los productos con una duración de garantía superior a dos años y un garan_label_url vacío.
  2. Para cada uno llama a la API de GARAN-Label con marca, modelo y duración, y guarda el PNG devuelto en tu propio almacenamiento.
  3. Escribe la URL de vuelta a través de la API REST de Magento (PUT /V1/products/{sku} con el atributo personalizado) o directamente mediante un repositorio en un módulo pequeño, y después limpia la caché de ese producto.

Las solicitudes de una combinación que ya tiene label devuelven el archivo existente sin consumir un crédito, así que el trabajo puede ejecutarse de forma idempotente. Referencia de la API con código de ejemplo →

Multi-store y multiidioma: qué aviso para cada store view

El store view de Magento es la unidad natural para el idioma del aviso. Asigna el bloque CMS con el aviso en español a los store views en español, el francés a los store views en francés, y así sucesivamente. Si un store view atiende a un país en un idioma en el que el aviso no está disponible, usa el idioma oficial de la UE de ese país. El GARAN-Label no necesita esta asignación: un label por modelo sirve para todos los store views.

Las tiendas con un website por país y varios store views por website deberían asignar los bloques a nivel de store view, no de website, para que un website belga pueda mostrar los avisos en francés y en neerlandés uno junto al otro.

Cómo generar los labels

Empieza creando una cuenta gratuita en GARAN-Label.com. Decide después cómo quieres generar los labels:

Catálogo pequeño

Modo manual: introduce marca, modelo y duración de la garantía, descarga el PNG, súbelo a tu almacenamiento de medios y pega la URL en el atributo.

Catálogo grande

Modo CSV para la gama existente, API para los productos nuevos. Ambos devuelven una URL por label que alojas tú mismo e importas.

Guía de generación masiva →

¿Listo para etiquetar tu catálogo de Magento?

Regístrate gratis y prueba el modo sandbox antes de gastar un solo crédito.

Probar gratis
FAQ

Preguntas frecuentes sobre Magento 2

¿Necesito una extensión de Magento 2 para el GARAN-Label?

No. Un bloque CMS más una actualización de layout XML cubren el aviso de garantía legal, y un atributo de producto más una pequeña plantilla cubren el GARAN-Label. Existen extensiones que pueden ahorrar tiempo, pero nada de lo descrito aquí requiere una.

¿Funciona con el tema Hyvä?

Sí. El atributo, el bloque CMS y el layout XML son independientes del tema. Solo cambia el archivo de plantilla que muestra la imagen: en Hyvä lo colocas en tu tema hijo y usas clases de Tailwind en lugar del marcado de Luma.

¿El atributo debe ser de tipo Media Image o un campo de texto con la URL?

Un campo de texto con la URL del label alojado en tu propio servidor es la opción pragmática. Un atributo Media Image añade un rol de imagen a la galería del producto, que es justo donde el label no debe aparecer, y además es más difícil de rellenar mediante importación CSV.

¿Puedo mostrar el atributo simplemente en la pestaña «Más información»?

No como única ubicación. El label tiene que ser visible en la ficha de producto y en color, y una pestaña en la que el cliente tiene que hacer clic primero es un punto débil. Muéstralo en la zona principal de información del producto y mantén el atributo fuera de la lista automática de atributos.

He importado nuevos valores del atributo, pero la tienda sigue mostrando el estado anterior. ¿Por qué?

Caché de página completa. Una importación no invalida de forma fiable las fichas de producto en caché. Actualiza los tipos de caché invalidados en System > Cache Management o ejecuta bin/magento cache:clean full_page, y reindexa si tus indexadores funcionan por programación.

¿Más preguntas? Ver todas las FAQ →

Consigue un 5 % de descuento con el código al pagar