Sitemaps for headless sites: what you need to know

In headless architectures, sitemap generation is no longer entirely dependent on the CMS. Although the backend continues to manage the content, the final routes are built on the frontend (Next.js, Nuxt, Gatsby, etc.). Therefore, generating a sitemap that correctly reflects the final URLs requires a different approach than a traditional site. If you want to have a clear understanding before moving forward, here we explain what an XML sitemap is and its relevance to SEO.

Generating a sitemap from the frontend (Next.js + headless CMS)

When pages exist as entries within a headless CMS (Contentful, Sanity, Strapi, Drupal in JSON:API mode, etc.), the most common approach is:

  • Query the CMS via API
  • Build the pages on the frontend
  • Generate a sitemap dynamically with the final information (slugs, structure, update date)
Example: Sitemap in Next.js

First, we define a special page sitemap.xml.tsx:

// pages/sitemap.xml.tsx
export default class Sitemap extends Component {
  static async getInitialProps({ res }: GetServerSidePropsContext): Promise<void> {
    const pages = await getPages()
    res.writeHead(200, { 'Content-Type': 'text/xml' })
    res.write(createSitemap(pages))
    res.end()
  }
}

This endpoint:

  • Gets the pages from the CMS (getPages)
  • Generates the XML (createSitemap)
  • Serves it directly as sitemap.xml
Define the CMS data type
export type ContentfulPage = {
  title: string
  slug: string
  header: ContentfulOrHeader
  blocks?: ContentfulBlock[]
  footer: ContentfulOrFooter
  updatedAt?: string
}

This type represents how a page arrives from Contentful, but the concept applies equally to any CMS: title, slug, components, and metadata such as updatedAt.

Función para generar el sitemap XML
const createSitemap = (pages: ContentfulPage[]) => {
  return `<?xml version="1.0" encoding="UTF-8"?>
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    ${generateLinks(pages)}
  </urlset>`
}

All it does is wrap the items inside the <urlset>.

Generar los items individuales del sitemap
const generateLinks = (pages: ContentfulPage[]) => {
  const pageItems = pages.map((page) => {
    const slugPath = page.slug === '/' ? '' : `/${page.slug}`
    const url = `${process.env.ORIGIN_URL}${slugPath}`
    return `
        <url>
          <loc>${url}</loc>
          <changefreq>daily</changefreq>
          <lastmod>${page.updatedAt}</lastmod>
          <priority>0.8</priority>
        </url>
      `
  })
  return pageItems.join('')
}

This is where the action happens: building real URLs from CMS slugs and metadata.

Getting pages from the CMS
import { client } from 'services/contentful'

export const getPages = async (): Promise<ContentfulPage[]> => {
  const collection = await client.getEntries({ 'content_type': 'page' })
  const pages = collection?.items?.length ? collection.items : null

  if (pages) return pages.map((page) => ({
    title: page.fields.title,
    slug: page.fields.slug,
    header: page.fields.header,
    blocks: page.fields.blocks,
    footer: page.fields.footer,
    updatedAt: page.sys.updatedAt,
  }))

  return []
}

Contentful (and most headless CMSs) deliver data like this:

{
  "fields": { "...": "..." },
  "sys": { "updatedAt": "2023-01-04T00:50:34.525Z" }
}

This is enough to build correct URLs.

Using a Drupal-generated sitemap (and serving it in Node.js/Express)

On headless sites with Drupal as the backend, it is sometimes more efficient to let Drupal generate the sitemap using the XML Sitemap module and simply expose that file from the frontend.

This approach avoids having to replicate logic on the frontend or develop custom generators.

Steps for the Drupal → Node.js approach
1. Install and configure XML Sitemap in Drupal

Drupal automatically generates:

  • /sitemap.xml
  • Configurable content items
  • Automatic regeneration when changes occur
2. In Node.js/Express, stream the sitemap

After testing different NPM modules, request is usually the quickest way to implement the stream:

app.get('/sitemap.xml', function (req, res) {
  var sitemap = request(sitemapxml);
  req.pipe(sitemap);
  sitemap.pipe(res);
});

/sitemap.xml from the frontend directly serves the version generated by Drupal.

This approach works especially well because it avoids duplicating route logic between the backend and frontend: Drupal manages the content, and the sitemap is always kept in sync with any updates. In addition, Google only needs to query a single endpoint (https://frontend.com/sitemap.xml), which simplifies crawling. It is a very efficient solution for lightweight frontends, sites with a large volume of pages, or projects where it does not make sense to maintain two systems generating URLs.

Which method to choose?

Choosing the right method depends on how routes are managed on your site:

  • Frontend defines the final routes: generate the sitemap directly from the frontend.
  • Drupal controls the structure and URLs: serve the sitemap generated by Drupal.
  • Highly dynamic sites with static generation (Next.js, Gatsby): the frontend can handle the sitemap.
  • Lower budget or avoiding custom development: using Drupal's XML Sitemap is usually more convenient.

Both methods are valid; the final choice depends on the routing model and where the URLs are actually built.

Focus on implementation

On a headless site, generating a sitemap involves choosing correctly where the actual routes live.
If the frontend builds the URLs, it should generate the sitemap.
If Drupal controls the structure, it can generate it, and the frontend only exposes it.

The important thing is that the sitemap reflects the final URLs that Google can crawl.
Without that, any headless architecture loses indexing capability.

Sitemaps para sitios headless: lo que necesitas saber

En arquitecturas desacopladas (headless), la generación del sitemap deja de depender por completo del CMS. Aunque el backend sigue administrando el contenido, las rutas finales se construyen en el frontend (Next.js, Nuxt, Gatsby, etc.). Por eso, generar un sitemap que refleje correctamente las URLs finales requiere un enfoque distinto al de un sitio tradicional. Si quieres tener la base clara antes de avanzar, aquí explicamos qué es un sitemap XML y su relevancia en SEO.

Generar un sitemap desde el frontend (Next.js + CMS headless)

Cuando las páginas existen como entradas dentro de un CMS headless (Contentful, Sanity, Strapi, Drupal en modo JSON:API, etc.), lo más común es:

  • Consultar el CMS vía API
  • Construir las páginas en el frontend
  • Generar un sitemap dinámicamente con la información final (slugs, estructura, fecha de actualización)
Ejemplo: Sitemap en Next.js

Primero definimos una página especial sitemap.xml.tsx:

// pages/sitemap.xml.tsx
export default class Sitemap extends Component {
  static async getInitialProps({ res }: GetServerSidePropsContext): Promise<void> {
    const pages = await getPages()
    res.writeHead(200, { 'Content-Type': 'text/xml' })
    res.write(createSitemap(pages))
    res.end()
  }
}

Este endpoint:

  • Obtiene las páginas desde el CMS (getPages)
  • Genera el XML (createSitemap)
  • Lo sirve directamente como sitemap.xml
Definir el tipo de datos del CMS
export type ContentfulPage = {
  title: string
  slug: string
  header: ContentfulOrHeader
  blocks?: ContentfulBlock[]
  footer: ContentfulOrFooter
  updatedAt?: string
}

Este tipo representa cómo llega una página desde Contentful, pero el concepto aplica igual a cualquier CMS: título, slug, componentes y metadatos como updatedAt.

Función para generar el sitemap XML
const createSitemap = (pages: ContentfulPage[]) => {
  return `<?xml version="1.0" encoding="UTF-8"?>
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    ${generateLinks(pages)}
  </urlset>`
}

Lo único que hace es envolver los items dentro del <urlset>.

Generar los items individuales del sitemap
const generateLinks = (pages: ContentfulPage[]) => {
  const pageItems = pages.map((page) => {
    const slugPath = page.slug === '/' ? '' : `/${page.slug}`
    const url = `${process.env.ORIGIN_URL}${slugPath}`
    return `
        <url>
          <loc>${url}</loc>
          <changefreq>daily</changefreq>
          <lastmod>${page.updatedAt}</lastmod>
          <priority>0.8</priority>
        </url>
      `
  })
  return pageItems.join('')
}

Aquí ocurre lo clave: construir URLs reales desde los slugs y metadatos del CMS.

Obtener las páginas desde el CMS
import { client } from 'services/contentful'

export const getPages = async (): Promise<ContentfulPage[]> => {
  const collection = await client.getEntries({ 'content_type': 'page' })
  const pages = collection?.items?.length ? collection.items : null

  if (pages) return pages.map((page) => ({
    title: page.fields.title,
    slug: page.fields.slug,
    header: page.fields.header,
    blocks: page.fields.blocks,
    footer: page.fields.footer,
    updatedAt: page.sys.updatedAt,
  }))

  return []
}

Contentful (y la mayoría de los CMS headless) entregan la data así:

{
  "fields": { "...": "..." },
  "sys": { "updatedAt": "2023-01-04T00:50:34.525Z" }
}

Con esto basta para armar URLs correctas.

Usar un sitemap generado por Drupal (y servirlo en Node.js/Express)

En sitios desacoplados con Drupal como backend, a veces es más eficiente dejar que Drupal genere el sitemap usando el módulo XML Sitemap y simplemente exponer ese archivo desde el frontend.

Este enfoque evita tener que replicar lógica en el frontend o desarrollar generadores personalizados.

Pasos del enfoque Drupal → Node.js
1. Instalar y configurar XML Sitemap en Drupal

Drupal genera automáticamente:

  • /sitemap.xml
  • Items de contenido configurables
  • Regeneración automática cuando hay cambios
2. En Node.js/Express, “streamear” el sitemap

Después de probar diferentes NPM modules, request suele ser la forma rápida de implementar el stream:

app.get('/sitemap.xml', function (req, res) {
  var sitemap = request(sitemapxml);
  req.pipe(sitemap);
  sitemap.pipe(res);
});

/sitemap.xml del frontend sirve directamente la versión generada por Drupal.

Este enfoque funciona especialmente bien porque evita duplicar la lógica de rutas entre backend y frontend: Drupal gestiona el contenido y el sitemap se mantiene siempre sincronizado con cualquier actualización. Además, Google solo necesita consultar un único endpoint (https://frontend.com/sitemap.xml), lo que simplifica el rastreo. Es una solución muy eficiente para frontends ligeros, sitios con gran volumen de páginas o proyectos donde no tiene sentido mantener dos sistemas generando URLs.

¿Qué método elegir?

Para elegir el método adecuado, depende de cómo se gestionan las rutas en tu sitio:

  • Frontend define las rutas finales: genera el sitemap directamente desde el frontend.
  • Drupal controla la estructura y las URLs: sirve el sitemap que genera Drupal.
  • Sitios muy dinámicos con generación estática (Next.js, Gatsby): el frontend puede encargarse del sitemap.
  • Menor presupuesto o evitar desarrollos custom: usar el XML Sitemap de Drupal suele ser más conveniente.

Ambos métodos son válidos; la elección final depende del modelo de enrutamiento y de dónde se construyen realmente las URLs.

Foco en la implementación

En un sitio desacoplado, generar un sitemap implica elegir correctamente dónde viven las rutas reales.
Si el frontend construye las URLs, él debe generar el sitemap.
Si Drupal controla la estructura, puede generarlo y el frontend solo lo expone.

Lo importante es que el sitemap refleje las URLs finales que Google puede rastrear.
Sin eso, cualquier arquitectura headless pierde capacidad de indexación.

PHP 8.5: new features that will make your code clearer, more secure, and easier to maintain

PHP 8.5 arrived on November 20, bringing improvements that enhance the development experience, code readability, and debugging capabilities. It is an update designed to solve practical problems: less repetitive code, more control over errors, and better support for modern environments and multilingual applications.

In this entry, we'll tell you about the most important new features and how they impact daily work on PHP projects.

1. New URI extension: native URL handling

PHP 8.5 incorporates a built-in extension for parsing, normalizing, and manipulating URLs according to the RFC 3986 and WHATWG URL standards. This improvement reduces dependence on external libraries and avoids common errors when handling paths or parameters. It also provides greater consistency when working with applications that consume APIs, simplifying URL processing in complex projects.

2. Pipe operator (|>): a more expressive and functional code

One of the most eagerly awaited new features is the |> operator, which allows functions to be chained together and values to be passed between them without using intermediate variables. The result is cleaner and more readable code, especially in transformation pipelines.

$result = $data
    |> sanitize(...)
    |> validate(...)
    |> transform(...);

Although it has some limitations (such as requiring callables with a single mandatory parameter and not accepting parameters by reference), its impact on clarity is significant. This new syntax favors a more functional and fluid programming style, especially in projects that process data in several stages.

3. New array_first() y array_last() functions

PHP 8.5 introduces array_first() and array_last(), two simple but highly anticipated functions for obtaining the first and last values of an array, even if it is associative. If the array is empty, they return null. This avoids writing repetitive logic and makes the intent of the code more explicit, allowing for clearer and more concise operations when working with data structures.

4. Clone with: copy objects and update properties easily

The update adds an extension to the use of clone() that allows you to clone an object and modify properties in the same expression. This feature is especially useful for classes with immutable or readonly, simplifying patterns that previously required several steps and helping to keep code more declarative and tidy.

5. #[\NoDiscard] attribute: goodbye to silent errors

This attribute generates a warning if the return value of a function marked as critical is ignored. This helps prevent errors that can go unnoticed, especially in methods that affect the state of the application or validate sensitive information. It also reinforces good development practices and improves the clarity of the program flow.

6. Improvements in debugging and error handling

One of the most valuable improvements for everyday use is that fatal errors now display a complete stack trace, facilitating diagnosis even in environments where it was previously difficult to identify the root cause. Added to this are two new functions: get_error_handler() and get_exception_handler(), which allow you to inspect currently active handlers. This capability is especially useful for frameworks, libraries, or systems that temporarily modify the error handling configuration.

7. Better support for localization and RTL languages

PHP 8.5 incorporates functions such as locale_is_right_to_left() and Locale::isRightToLeft() to detect whether a language is written from right to left, such as Arabic or Hebrew. This allows interfaces, CSS classes, and visual behaviors to be adjusted more precisely. For multilingual applications, this improvement represents an important step toward more complete internationalization.

8. cURL extension: more efficient handling of multiple sessions

The new curl_multi_get_handles() feature allows you to retrieve all handles associated with a multi-handle, making it easier to manage multiple concurrent requests. In addition, cURL handles can now persist between PHP requests, reducing initialization costs and improving performance in applications that frequently interact with the same hosts.

9. More powerful CLI: php --ini=diff

The console incorporates the php --ini=diff option, which displays only the INI directives that have been modified from the standard configuration. This feature simplifies comparison between environments and allows for faster configuration auditing, especially on computers that handle multiple development environments.

10. PHP_BUILD_DATE constant

The new PHP_BUILD_DATE constant allows you to know the compilation date of the PHP binary, which is useful for audits, version verification, and diagnostics in environments where multiple builds of the language coexist.

11. Closures and callables in constant expressions

PHP now allows static closures and first-class callables to be used within const expressions, even as attribute parameters. This expands the language's configuration possibilities, making the code more declarative and allowing complex behaviors to be defined at compile time.

12. Performance and security improvements

The version also brings significant internal optimizations. BCMath now uses a stack instead of a heap, which improves performance. XMLWriter receives adjustments that reduce resource consumption. In addition, new opcache directives (such as opcache.file_cache_read_only) help optimize cache behavior. Added to this are critical bug fixes, such as memory leaks, overflows, and UAF cases, which strengthen the stability of the language.

A release focused on practicality

PHP 8.5 does not transform the language from the ground up, but it does offer practical improvements that make development cleaner, more expressive, safer, and more efficient. For teams looking to maintain modern codebases or prepare for the jump to PHP 9.0, this release represents a solid and timely step forward.

PHP 8.5: las novedades que harán tu código más claro, seguro y fácil de mantener

El 20 de noviembre llegó PHP 8.5, una versión que trae mejoras que elevan la experiencia de desarrollo, la legibilidad del código y la capacidad de depuración. Es una actualización pensada para resolver dolores reales: menos código repetitivo, más control sobre errores y un mejor soporte para entornos modernos y aplicaciones multilingües.
En esta entrada te contamos las novedades más importantes y cómo impactan el trabajo diario en proyectos PHP.

1. Nueva extensión URI: manejo de URLs de forma nativa

PHP 8.5 incorpora una extensión integrada para analizar, normalizar y manipular URLs siguiendo los estándares RFC 3986 y WHATWG URL. Esta mejora reduce la dependencia de librerías externas y evita errores comunes al manejar rutas o parámetros. También aporta mayor consistencia al trabajar con aplicaciones que consumen APIs, simplificando el procesamiento de URLs en proyectos complejos.

2. Operador pipe (|>): un código más expresivo y funcional

Una de las novedades más esperadas es el operador |>, que permite encadenar funciones y pasar valores entre ellas sin usar variables intermedias. El resultado es un código más limpio y legible, especialmente en pipelines de transformación.

$result = $data
    |> sanitize(...)
    |> validate(...)
    |> transform(...);

Aunque tiene algunas limitaciones (como requerir callables con un único parámetro obligatorio y no aceptar parámetros por referencia), su impacto en claridad es significativo. Esta nueva sintaxis favorece un estilo de programación más funcional y fluido, especialmente en proyectos que procesan datos en varias etapas.

3. Nuevas funciones array_first() y array_last()

PHP 8.5 introduce array_first() y array_last(), dos funciones sencillas pero muy esperadas para obtener el primer y el último valor de un arreglo, incluso si es asociativo. Si el array está vacío, devuelven null. Esto evita escribir lógica repetitiva y hace más explícita la intención del código, permitiendo operaciones más claras y concisas al trabajar con estructuras de datos.

4. Clone with: copiar objetos y actualizar propiedades fácilmente

La actualización incorpora una extensión al uso de clone() que permite clonar un objeto y modificar propiedades en la misma expresión. Esta posibilidad es especialmente útil para clases con propiedades inmutables o readonly, simplificando patrones que antes requerían varios pasos y ayudando a mantener un código más declarativo y ordenado.

5. Atributo #[\NoDiscard]: adiós a errores silenciosos

Este atributo genera una advertencia si se ignora el valor de retorno de una función marcada como crítica. Esto ayuda a evitar errores que pueden pasar desapercibidos, especialmente en métodos que afectan el estado de la aplicación o validan información sensible. Además, refuerza buenas prácticas de desarrollo y mejora la claridad del flujo del programa.

6. Mejoras en depuración y manejo de errores

Una de las mejoras más valiosas para el día a día es que los errores fatales ahora muestran un stack trace completo, facilitando el diagnóstico incluso en entornos donde antes era difícil identificar la causa raíz. A esto se suman dos nuevas funciones: get_error_handler() y get_exception_handler(), que permiten inspeccionar los handlers actualmente activos. Esta capacidad es especialmente útil para frameworks, librerías o sistemas que modifican temporalmente la configuración de manejo de errores.

7. Mejor soporte para localización y lenguajes RTL

PHP 8.5 incorpora funciones como locale_is_right_to_left() y Locale::isRightToLeft() para detectar si un idioma se escribe de derecha a izquierda, como árabe o hebreo. Esto permite ajustar interfaces, clases CSS y comportamientos visuales de forma más precisa. Para aplicaciones multilingües, esta mejora representa un paso importante hacia una internacionalización más completa.

8. Extensión cURL: manejo más eficiente de múltiples sesiones

La nueva función curl_multi_get_handles() permite recuperar todos los handles asociados a un multi-handle, lo que facilita la gestión de múltiples peticiones concurrentes. Además, los handles de cURL ahora pueden persistir entre peticiones PHP, reduciendo el costo de inicialización y mejorando el rendimiento en aplicaciones que interactúan frecuentemente con los mismos hosts.

9. CLI más poderosa: php --ini=diff

La consola incorpora la opción php --ini=diff, que muestra únicamente las directivas INI que fueron modificadas respecto a la configuración estándar. Esta capacidad simplifica la comparación entre entornos y permite auditar configuraciones de forma más rápida, especialmente en equipos que manejan múltiples ambientes de desarrollo.

10. Constante PHP_BUILD_DATE

La nueva constante PHP_BUILD_DATE permite conocer la fecha de compilación del binario de PHP, lo cual es útil para auditorías, verificación de versiones y diagnóstico de entornos en los que conviven múltiples builds del lenguaje.

11. Closures y callables en expresiones constantes

PHP ahora permite utilizar closures estáticas y first-class callables dentro de expresiones const, incluso como parámetros de atributos. Esto amplía las posibilidades de configuración del lenguaje, haciendo el código más declarativo y permitiendo definir comportamientos complejos desde el tiempo de compilación.

12. Mejoras de rendimiento y seguridad

La versión también trae optimizaciones internas importantes. BCMath ahora utiliza stack en lugar de heap, lo que mejora el rendimiento. XMLWriter recibe ajustes que reducen el consumo de recursos. Además, nuevas directivas de opcache (como opcache.file_cache_read_only) ayudan a optimizar el comportamiento del caché. A esto se suman correcciones de bugs críticos, como fugas de memoria, overflows y casos de UAF, que fortalecen la estabilidad del lenguaje.

Una versión que apunta a lo práctico

PHP 8.5 no transforma el lenguaje desde cero, pero sí ofrece mejoras prácticas que hacen que el desarrollo sea más limpio, expresivo, seguro y eficiente. Para equipos que buscan mantener bases de código modernas o prepararse para el salto hacia PHP 9.0, esta versión representa un avance sólido y oportuno.

XML sitemap: what it is and how to set it up in Drupal

When working on your website's SEO, one of the most important (and often overlooked) elements is the sitemap. This file serves as a map for search engines, helping them discover and index all relevant pages on your site.

Although ideally Google should be able to crawl all pages through internal links, in practice, many are left out of that crawl: new pages, sections with few links, or content hosted deep within the site. That's where the sitemap comes in.

A sitemap allows search engines to find every important page on your website faster, even those that don't have direct internal links. In other words, it speeds up the content discovery process and improves indexing coverage.

What is a sitemap and why is it important?

A sitemap is a file that contains a structured list of a website's pages. Its main purpose is to facilitate the work of web crawlers, allowing them to identify what content exists, when it was last updated, and how relevant it is within the site.

Additionally, it helps search engines index your website more efficiently, increasing the likelihood that your pages will appear in results when people search for terms related to your content or services.

Although Google does not consider sitemaps a mandatory requirement, it does recommend them as a best practice, especially for large sites with many internal pages or few links. In general, having a sitemap makes the work of search engines easier and helps your content be discovered and indexed faster.

Types of sitemaps and their differences

There are different types of sitemaps, each with a specific purpose:

  • Visual sitemap: mainly used during the web design process to plan the site structure, but has no direct impact on SEO.
  • HTML sitemap: designed for site visitors. It functions as an index that brings together the main links on a single page, facilitating navigation, and is usually located in the menu or footer.
  • XML sitemap: this is the format preferred by search engines because it brings together all the important URLs on the site along with useful metadata, such as the date of the last update, the frequency of changes, or the priority of each page.

Although the three types serve different purposes, XML has the greatest impact on SEO, as it directly communicates to Google how your site is structured. It also allows extensions to include additional metadata (for example, information about images, videos, news content, or localized versions of pages), making it the best option when you need to communicate extra details to search engines.

How to create an effective XML sitemap

Before generating your sitemap, it's a good idea to define which pages to include. Not all URLs should appear in it. The rule is simple: if you don't want a page to appear in search results, don't include it in the sitemap.

For example, avoid including test pages, duplicate content, thank you pages, or internal search results. Instead, prioritize sections that are relevant to your users: product pages, services, blog articles, or categories.

A basic XML sitemap looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.example.com/services/</loc>
    <lastmod>2024-01-01</lastmod>
  </url>
</urlset>

In this fragment:

  • <?xml version="1.0" encoding="UTF-8"?> indicates the file type..
  • <urlset> defines the set of URLs.
  • <loc> shows the exact page address.
  • <lastmod> indicates the date of the last modification.

Una vez creado, puedes comprobarlo escribiendo en tu navegador: https://yoursite.com/sitemap.xml

And, to facilitate indexing, it is recommended that you send it directly to Google Search Console.

How to do it in Drupal step by step

If your site is developed in Drupal, creating an XML sitemap is easier than it seems, thanks to the Simple XML Sitemap module. Here are the steps to configure it:

Step 1: Log in to Drupal.

Step 2: Install the Simple XML Sitemap module from the official website.

Step 3: Activate the necessary submodules

  • Simple XML Sitemap
  • Simple XML Sitemap (Search engines)
  • (Optional) Simple XML Sitemap (Views) if you use the Views module.

Step 4: Go to Configuration → Search and metadata → Simple XML Sitemap.

Step 5: Select Rebuild queue & generate to create your first sitemap.

In the Settings tab, you can adjust how often the file is regenerated and define whether the sitemap will be displayed with an XSL stylesheet to make it more readable.

From the Inclusion tab, you can also add custom links, comments, images, or other elements that add value depending on your content type.

At Seed EM, we often use this module as part of the basic SEO configurations for Drupal projects, as it allows us to generate accurate sitemaps and keep them updated automatically.

The impact of an XML sitemap

An XML sitemap not only organizes your site for search engines but also improves how Google understands the hierarchy and relevance of your content. Although indexing also depends on other factors (such as content quality and internal links), a good sitemap is a solid foundation for your website to be discovered faster and more accurately.

Drupal simplifies this process with tools such as Simple XML Sitemap, which automate the generation and updating of the file, ensuring that every new relevant page is visible to search engines.

Creating and maintaining an XML sitemap may seem like a technical detail, but it is actually a key part of any modern SEO strategy. And with flexible platforms such as Drupal, doing it well is within everyone's reach.

Sitemap XML: qué es, para qué sirve y cómo configurarlo en Drupal

Cuando trabajas en el posicionamiento de tu sitio web, uno de los elementos más importantes (y muchas veces olvidados) es el sitemap. Este archivo actúa como un mapa que guía a los motores de búsqueda, ayudándoles a descubrir e indexar todas las páginas relevantes de tu sitio.

Aunque lo ideal es que Google pueda rastrear todas las páginas a través de los enlaces internos, en la práctica muchas quedan fuera de ese recorrido: páginas nuevas, secciones con poca vinculación o contenido alojado en niveles profundos del sitio. Ahí es donde entra en juego el sitemap.

Un sitemap permite que los motores de búsqueda encuentren más rápido cada página importante de tu web, incluso aquellas que no tienen enlaces internos directos. En otras palabras, acelera el proceso de descubrimiento de contenido y mejora la cobertura de indexación.

Qué es un sitemap y por qué importa

Un sitemap (o mapa del sitio) es un archivo que contiene una lista estructurada de las páginas de un sitio web. Su principal objetivo es facilitar el trabajo de los rastreadores web, permitiéndoles identificar qué contenido existe, cuándo fue actualizado por última vez y cuál es su relevancia dentro del sitio.

Además, ayuda a que los motores de búsqueda indexen tu web de forma más eficiente, aumentando la probabilidad de que tus páginas aparezcan en los resultados cuando las personas buscan términos relacionados con tu contenido o servicios.

Aunque Google no considera los sitemaps un requisito obligatorio, sí los recomienda como una buena práctica, especialmente en sitios grandes, con muchas páginas internas o poco enlazado. En general, contar con un sitemap facilita el trabajo de los motores de búsqueda y ayuda a que tu contenido sea descubierto e indexado más rápido.

Tipos de sitemap y sus diferencias

Existen distintos tipos de sitemaps, cada uno con un propósito específico:

  • Sitemap visual: se usa principalmente durante el proceso de diseño web para planificar la estructura del sitio, aunque no tiene impacto directo en el SEO.
  • Sitemap HTML: está pensado para los visitantes del sitio. Funciona como un índice que reúne los enlaces principales en una sola página, facilitando la navegación y ubicándose normalmente en el menú o en el pie de página.
  • Sitemap XML: es el formato preferido por los motores de búsqueda porque reúne todas las URL importantes del sitio junto con metadatos útiles, como la fecha de la última actualización, la frecuencia de cambios o la prioridad de cada página.

Aunque los tres tipos cumplen funciones diferentes, el XML es el que más influye en el SEO, ya que comunica directamente a Google cómo está estructurado tu sitio. Además, permite extensiones para incluir metadatos adicionales (por ejemplo, información sobre imágenes, vídeos, contenido de noticias o versiones localizadas de las páginas), lo que lo convierte en la mejor opción cuando necesitas comunicar detalles extra a los motores de búsqueda.

Cómo crear un sitemap XML eficaz

Antes de generar tu sitemap, conviene definir qué páginas incluir. No todas las URL deberían aparecer en él. La regla es simple: si no quieres que una página aparezca en los resultados de búsqueda, no la incluyas en el sitemap.

Por ejemplo, evita incluir páginas de prueba, contenido duplicado, páginas de agradecimiento o resultados de búsqueda internos. En cambio, prioriza las secciones relevantes para tus usuarios: páginas de productos, servicios, artículos de blog o categorías.

Un sitemap XML básico se ve así:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.ejemplo.com/servicios/</loc>
    <lastmod>2024-01-01</lastmod>
  </url>
</urlset>

En este fragmento:

  • <?xml version="1.0" encoding="UTF-8"?> indica el tipo de archivo.
  • <urlset> define el conjunto de URL.
  • <loc> muestra la dirección exacta de la página.
  • <lastmod> indica la fecha de la última modificación.

Una vez creado, puedes comprobarlo escribiendo en tu navegador: https://tusitio.com/sitemap.xml

Y, para facilitar la indexación, es recomendable enviarlo directamente a Google Search Console.

Cómo hacerlo en Drupal paso a paso

Si tu sitio está desarrollado en Drupal, crear un sitemap XML es más fácil de lo que parece gracias al módulo Simple XML Sitemap . A continuación te mostramos los pasos para configurarlo:

Paso 1: Inicia sesión en Drupal.

Paso 2: Instala el módulo Simple XML Sitemap desde la página oficial.

Paso 3: Activa los submódulos necesarios:

  • Simple XML Sitemap
  • Simple XML Sitemap (Search engines)
  • (Opcional) Simple XML Sitemap (Views) si usas el módulo Views.

Paso 4: Ve a Configuración → Búsqueda y metadatos → Simple XML Sitemap.

Paso 5: Selecciona Rebuild queue & generate para crear tu primer sitemap.

En la pestaña Settings puedes ajustar cada cuánto se regenera el archivo y definir si el sitemap se mostrará con una hoja de estilo XSL para hacerlo más legible.

Desde la pestaña Inclusion, también puedes agregar enlaces personalizados, comentarios, imágenes u otros elementos que aporten valor según tu tipo de contenido.

En Seed EM, solemos utilizar este módulo como parte de las configuraciones SEO básicas de los proyectos Drupal, ya que permite generar sitemaps precisos y mantenerlos actualizados de forma automática.

El impacto real de un sitemap XML

Un sitemap XML no solo organiza tu sitio para los motores de búsqueda, sino que mejora la manera en que Google entiende la jerarquía y relevancia de tu contenido. Aunque la indexación también depende de otros factores (como la calidad del contenido y los enlaces internos), un buen sitemap es una base sólida para que tu web sea descubierta más rápido y con mayor precisión.

Drupal simplifica este proceso con herramientas como Simple XML Sitemap, que automatizan la generación y actualización del archivo, asegurando que cada nueva página relevante sea visible para los motores de búsqueda.

Crear y mantener un sitemap XML puede parecer un detalle técnico, pero en realidad es una pieza clave en cualquier estrategia SEO moderna. Y con plataformas flexibles como Drupal, hacerlo bien está al alcance de todos.

Seed EM celebrates Santiago Naranjo at DrupalCon Vienna 2025

At Seed EM, we believe that Drupal's strength lies in its community: in the people who collaborate, share, and enable this ecosystem to continue evolving. That's why we are proud to share the testimony of Santiago Naranjo, one of our team members, who had the opportunity to attend DrupalCon Vienna 2025 thanks to the Drupal Association's Inclusion Fund Scholarship.

His participation as a volunteer at this global event reflects our commitment as a company to inclusion, collaboration, and professional growth within the Drupal world.

An experience that goes beyond the professional realm

Attending DrupalCon Vienna 2025 has been one of the most enriching experiences of my career and personal life. Thanks to the Inclusion Fund Scholarship, I had the opportunity to represent my country and volunteer at an event that brings together the global Drupal community. Being part of this convention was a privilege that allowed me to experience firsthand the passion, innovation, and diversity that characterize the Drupal ecosystem.

During the conference, I learned about the latest advances in CMS, especially new template implementations and artificial intelligence applications within the platform. These talks and demonstrations not only broadened my technical understanding but also inspired me to continue exploring how automation and AI can improve the development experience and accessibility of digital projects.

I also had the opportunity to interact with stands from leading Drupal companies worldwide, talk to their teams, discover new tools, and learn about approaches that could be applied to future projects. This exchange of ideas reminded me of the strength of the Drupal community, where every contribution, no matter how small, helps the ecosystem continue to evolve.

The trip, however, also had its challenging side. The flight odyssey turned into quite an adventure, with delays and missed connections that tested my patience. Even so, each unexpected event brought with it small lessons, moments of reflection, and the opportunity to share experiences with other people who, like me, were traveling enthusiastically to the same destination.

Beyond the technical aspects, this experience represented an important personal leap. It was my first solo international trip, and through it I learned to trust myself more, to adapt to the unknown, and to enjoy every moment, even the most uncertain ones. I discovered a Vienna full of history, art, and warmth, which, combined with the energy of the Drupal community, left a deep impression on me.

I return with great gratitude to the Drupal Association, Kuoni Tumlare | Congress, and my company Seed EM, which have been an essential support in making this experience possible. I take with me new ideas, inspiration, and the desire to continue actively contributing to the Drupal community, convinced that the true value of technology comes when we share it with empathy, inclusion, and purpose.

A lesson that inspires us to keep growing

Stories like this reflect the spirit that drives our company: to grow alongside the community, learn from every experience, and continue contributing to the open source ecosystem.

At Seed EM, we celebrate the talent, curiosity, and passion that make Drupal a space for collaborative, open, and human innovation.

Orgullo Seed EM: Santiago Naranjo en DrupalCon Vienna 2025

En Seed EM creemos que la fuerza de Drupal está en su comunidad: en las personas que colaboran, comparten y hacen posible que este ecosistema siga evolucionando. Por eso nos llena de orgullo compartir el testimonio de Santiago Naranjo, uno de nuestros colaboradores, quien tuvo la oportunidad de asistir a DrupalCon Vienna 2025 gracias a la Inclusion Fund Scholarship de la Drupal Association.

Su participación como voluntario en este evento global refleja el compromiso que tenemos como compañía con la inclusión, la colaboración y el crecimiento profesional dentro del mundo Drupal.

Una experiencia que trasciende lo profesional

Asistir a DrupalCon Vienna 2025 ha sido una de las experiencias más enriquecedoras de mi carrera y de mi vida personal. Gracias a la Inclusion Fund Scholarship, tuve la oportunidad de representar a mi país y participar como voluntario en un evento que reúne a la comunidad global de Drupal. Ser parte de esta convención fue un privilegio que me permitió vivir de cerca la pasión, la innovación y la diversidad que caracterizan al ecosistema Drupal.

Durante la conferencia, pude conocer los avances más recientes del CMS, en especial las nuevas implementaciones de plantillas y las aplicaciones de inteligencia artificial dentro de la plataforma. Estas charlas y demostraciones no solo ampliaron mi comprensión técnica, sino que también me inspiraron a seguir explorando cómo la automatización y la IA pueden mejorar la experiencia de desarrollo y la accesibilidad de los proyectos digitales.

Tuve además la oportunidad de interactuar con stands de compañías líderes en Drupal a nivel mundial, conversar con sus equipos, descubrir nuevas herramientas y conocer enfoques que podrían aplicarse en futuros proyectos. Este intercambio de ideas me recordó la fuerza de la comunidad Drupal, donde cada contribución, sin importar su tamaño, ayuda a que el ecosistema siga evolucionando.

El viaje, sin embargo, también tuvo su lado desafiante. La odisea de los vuelos se convirtió en toda una aventura, con retrasos y conexiones perdidas que pusieron a prueba mi paciencia. Aun así, cada imprevisto trajo consigo pequeños aprendizajes, momentos de reflexión y la oportunidad de compartir experiencias con otras personas que, como yo, viajaban con entusiasmo hacia el mismo destino.

Más allá de lo técnico, esta experiencia representó un salto personal importante. Fue mi primer viaje internacional en solitario, y con él aprendí a confiar más en mí mismo, a adaptarme a lo desconocido y a disfrutar cada instante, incluso los más inciertos. Descubrí una Viena llena de historia, arte y calidez, que combinada con la energía de la comunidad Drupal, me dejó una huella profunda.

Regreso con una gran gratitud hacia la Drupal Association, Kuoni Tumlare | Congress y mi empresa Seed EM, que han sido un apoyo fundamental para hacer posible esta experiencia. Me llevo nuevas ideas, inspiración y el deseo de seguir contribuyendo activamente a la comunidad Drupal, convencido de que el verdadero valor de la tecnología nace cuando la compartimos con empatía, inclusión y propósito.

Un aprendizaje que inspira a seguir creciendo

Historias como esta reflejan el espíritu que impulsa a nuestra compañía: crecer junto a la comunidad, aprender de cada experiencia y seguir aportando al ecosistema open source.

En Seed EM celebramos el talento, la curiosidad y la pasión que hacen de Drupal un espacio de innovación colaborativa, abierta y humana.

Drupal AI Makers: a new milestone for Seed EM

In a constantly evolving digital ecosystem, Drupal and artificial intelligence (AI) are complementary forces redefining how digital experiences are created and managed.

Therefore, at Seed EM, an agency specializing in Drupal solutions for Colombia and Latin America, we are proud to announce our incorporation into the Drupal AI Makers initiative. This global program brings together the leading companies in the ecosystem to develop and implement AI applications within Drupal.

What is Drupal AI Makers and why is it relevant?

The Drupal AI Initiative (known as Drupal AI Makers) is an open initiative of the international Drupal community that seeks to integrate artificial intelligence into the core and modules of the CMS, enhancing automation, personalization, and efficiency in web development.

Participating as an AI Maker means collaborating directly on the evolution of the project: from researching applicable AI models to creating tools that improve the experience of editors, developers, and end users.

Seed EM's vision within the Drupal + AI ecosystem

At Seed EM, we believe that artificial intelligence should amplify human value, not replace it. Our participation in the Drupal AI Makers initiative reinforces that vision, focusing on:

  • Integrating AI ethically and sustainably, ensuring transparency and privacy. 
  • Designing intelligent solutions where Drupal and AI complement each other in content management, process automation, and user experience optimization.   
  • Sharing knowledge with the global community, promoting the responsible adoption of AI in open source.

As part of the chosen companies worldwide for this initiative, we contribute with applied research, module development, and real-world AI–Drupal integration testing.

Benefits for our clients

The integration of AI into Drupal isn't just a technical improvement: it transforms the CMS into a digital experience platform capable of real-time personalization, generating predictive insights, and automating editorial processes. Being part of Drupal AI Makers allows us to turn these innovations into tangible benefits for our clients: greater agility, efficiency, and personalization.

1. Technological anticipation

We have early access to Drupal AI advances, allowing us to incorporate improvements before their global launch: from predictive modules to generative content assistants.

2. Smarter Drupal sites

We integrate AI capabilities into editorial workflows, analytics, and SEO, optimizing Core Web Vitals, technical performance, and experience personalization.

3. Security and intelligent maintenance

We apply machine learning to detect error patterns, optimize deployments, and improve the stability of Drupal environments.

4. Specialized support

Our support, evolution, and training services now incorporate best practices derived directly from the Drupal AI Initiative, aligned with global standards for digital innovation.

Commitment to the community and the open source

Our incorporation into Drupal AI Makers adds to more than 18 years of continuous work with the open source community.  
As a Drupal Platinum Certified Partner, we have contributed to the creation of modules, workshops, and mentoring, promoting the adoption of Drupal in Colombia and Latin America.

Being part of the global AI initiative is a natural extension of our commitment: to continue building a more open, collaborative, and technologically advanced web.

For this reason, the union of Drupal and artificial intelligence opens a new era for organizations seeking purposeful innovation. At Seed EM, we reaffirm our commitment to human, ethical, and sustainable development: we use AI as a tool to enhance creativity, efficiency, and digital growth.

We innovate with Drupal, we advance with AI.

Drupal AI Makers: una nueva etapa para Seed EM

En un ecosistema digital en constante evolución, Drupal y la inteligencia artificial (IA) se posicionan como dos fuerzas complementarias que redefinen cómo se crean y gestionan las experiencias digitales.

Por eso, en Seed EM, agencia especializada en soluciones Drupal para Colombia y Latinoamérica, anunciamos con orgullo nuestra incorporación a la iniciativa Drupal AI Makers, un programa global que reúne a las principales empresas del ecosistema para desarrollar e implementar aplicaciones de IA dentro de Drupal.

¿Qué es Drupal AI Makers y por qué es relevante?

La Drupal AI Initiative (conocida como Drupal AI Makers) es una iniciativa abierta de la comunidad internacional de Drupal que busca integrar inteligencia artificial en el núcleo y los módulos del CMS, potenciando la automatización, la personalización y la eficiencia en el desarrollo web.

Participar como AI Maker significa colaborar directamente en la evolución del proyecto: desde la investigación de modelos de IA aplicables hasta la creación de herramientas que mejoren la experiencia de editores, desarrolladores y usuarios finales.

La visión de Seed EM dentro del ecosistema Drupal + IA

En Seed EM creemos que la inteligencia artificial debe amplificar el valor humano, no sustituirlo. Nuestra participación en la iniciativa Drupal AI Makers refuerza esa visión, enfocándonos en:

  • Integrar IA de forma ética y sostenible, garantizando transparencia y privacidad.  
  • Diseñar soluciones inteligentes, donde Drupal y la IA se complementen en la gestión de contenido, automatización de procesos y optimización de la experiencia del usuario.  
  • Compartir conocimiento con la comunidad global, impulsando la adopción responsable de la IA en el open source.

Como parte del grupo de empresas elegidas a nivel mundial para esta iniciativa, contribuimos con investigación aplicada, desarrollo de módulos y pruebas reales de integración IA–Drupal.

Beneficios concretos para nuestros clientes

La integración de IA en Drupal no es solo una mejora técnica: transforma el CMS en una plataforma de experiencias digitales capaz de personalizar en tiempo real, generar insights predictivos y automatizar procesos editoriales. Ser parte de Drupal AI Makers nos permite transformar estas innovaciones en beneficios tangibles para nuestros clientes: mayor agilidad, eficiencia y personalización.

1. Anticipación tecnológica

Accedemos de forma temprana a los avances de Drupal AI, lo que nos permite incorporar mejoras antes de su lanzamiento global: desde módulos predictivos hasta asistentes de contenido generativo.

2. Sitios Drupal más inteligentes

Integramos capacidades de IA en flujos editoriales, analítica y SEO, optimizando Core Web Vitals, rendimiento técnico y personalización de la experiencia.

3. Seguridad y mantenimiento inteligente

Aplicamos machine learning para detectar patrones de error, optimizar despliegues y mejorar la estabilidad de los entornos Drupal.

4. Acompañamiento especializado

Nuestros servicios de soporte, evolución y capacitación ahora incorporan buenas prácticas derivadas directamente de la Drupal AI Initiative, alineadas con los estándares globales de innovación digital.

Compromiso con la comunidad y el código abierto

Nuestra incorporación a Drupal AI Makers se suma a más de 18 años de trabajo continuo con la comunidad open source.  
Como Platinum Certified Partner de Drupal, hemos contribuido a la creación de módulos, workshops y mentorías, impulsando la adopción de Drupal en Colombia y Latinoamérica.

Ser parte de la iniciativa global de IA es una extensión natural de nuestro compromiso: seguir construyendo una web más abierta, colaborativa y tecnológicamente avanzada.

En esta línea, la unión de Drupal e inteligencia artificial abre una nueva era para las organizaciones que buscan innovación con propósito. En Seed EM reafirmamos nuestro compromiso con un desarrollo humano, ético y sostenible: utilizamos la IA como herramienta para potenciar creatividad, eficiencia y crecimiento digital.

Innovamos con Drupal, avanzamos con IA.

Drupal 11 + AI: create your own custom theme

On September 19, the Drupal community in Colombia gathered for a workshop led by our collaborator Daniel Sarmiento. For three hours, attendees learned how to create a custom theme in Drupal 11 from scratch, incorporating artificial intelligence to optimize each step of the process.

In this article, you will find a summary of the most important points from the session and a practical guide so you can put them into practice.

Preparing the environment

Before you start creating your theme, it's essential to have a well-configured development environment. One of the most recommended options is DDEV, which allows you to create isolated workspaces and ensures the compatibility and stability of your project, regardless of the equipment you're working on.

💡 If you haven't set up your environment yet, check out the step-by-step tutorial to install DDEV and Docker. 

Also, remember that Composer is key to managing dependencies, installing modules, and keeping the Drupal core up to date.

Basic structure of a theme in Drupal 11

A custom theme in Drupal requires a minimum file structure to function properly:

  • mytheme.info.yml → Contains metadata and initial settings.
  • mytheme.libraries.yml → Defines the CSS and JS files to be loaded.
  • Optional: a mytheme.theme file to include PHP logic.

It is recommended to create the theme within the themes/custom folder, rather than modifying the Olivero base theme, to avoid conflicts with future updates.

It is also recommended to organize files into separate folders, for example:

themes/custom/my_theme/

├── css/
│   └── my_theme.css
├── js/
│   └── my_theme.js
├── my_theme.info.yml
├── my_theme.libraries.yml
└── my_theme.theme (optional)

How AI accelerates the process

One of the most useful ways to integrate AI into this workflow is to use it to generate and adjust parts of the theme. For example, you can ask an AI model from the outset to suggest the content and minimum file structure needed to create the custom theme. You can also generate specific CSS and JavaScript snippets to style entire blocks or sections on the site.

In addition, for example, by identifying an HTML class within a content type, AI can generate the CSS needed to center an image or change the typography, or completely style the element based on a reference image of a design, thus reducing development and testing time.

Activating the theme and clearing the cache

Once the theme has been created, you can activate it from the interface at Appearance → Install theme.

When you select it as the default theme, the changes will be available on the site. Don't forget to clear the cache (“Flush caches”) after each modification, as this ensures that Drupal recognizes the new styles, scripts, or settings that have been applied.

Beyond design: AI in content management

Artificial intelligence is not only useful for visual development, but it is also transforming content management in Drupal.

Today, there are experimental modules such as Experience Builder, which combine React and AI to generate blocks and sections directly from the administration interface, using simple descriptions in natural language.

Likewise, some tools already allow you to suggest taxonomies, create content structures, or manage fields using conversational commands, significantly streamlining the work of editorial and technical teams.

The future with Drupal + AI

Artificial intelligence is redefining how we work with Drupal. It's no longer just about automating tasks, but incorporating new ways of thinking, designing, and building projects that previously required much more time and effort. Its integration allows us to speed up processes, reduce errors, and open up creative opportunities that enhance the value of each development.

Starting to experiment with these tools now can make a difference in your projects. Every small step—from automating simple tasks to integrating AI-powered modules—brings you closer to building digital experiences that are more relevant, flexible, and aligned with the needs of your users.

Drupal 11 + IA: crea tu propio tema personalizado

El pasado 19 de septiembre, la comunidad Drupal de Colombia se reunió para un workshop liderado por nuestro colaborador Daniel Sarmiento. Durante tres horas, los asistentes aprendieron cómo crear un tema personalizado en Drupal 11 desde cero, incorporando inteligencia artificial para optimizar cada paso del proceso.

En este artículo encontrarás un resumen de los puntos más importantes de la sesión y una guía práctica para que puedas ponerlos en marcha.

Preparando el entorno de trabajo

Antes de iniciar con la creación del tema, es fundamental contar con un entorno de desarrollo bien configurado. Una de las opciones más recomendadas es DDEV, que permite crear espacios de trabajo aislados y garantiza la compatibilidad y estabilidad del proyecto, sin importar el equipo en el que trabajes.

💡 Si aún no tienes configurado tu entorno, consulta el tutorial paso a paso para instalar DDEV y Docker 

Además, recuerda que Composer es clave para gestionar dependencias, instalar módulos y mantener el núcleo de Drupal actualizado.

Estructura básica de un tema en Drupal 11

Un tema personalizado en Drupal requiere una estructura mínima de archivos para funcionar correctamente:

  • mitema.info.yml → Contiene los metadatos y configuraciones iniciales.
  • mitema.libraries.yml → Define los archivos CSS y JS que se cargarán.
  • Opcional: un archivo mitema.theme para incluir lógica PHP.

Es recomendable crear el tema dentro de la carpeta themes/custom, en lugar de modificar el tema base Olivero, para evitar conflictos con futuras actualizaciones.

También se recomienda organizar los archivos en carpetas separadas, por ejemplo:

themes/custom/mi_tema/

├── css/
│   └── mi_tema.css
├── js/
│   └── mi_tema.js
├── mi_tema.info.yml
├── mi_tema.libraries.yml
└── mi_tema.theme (opcional)

Cómo la IA acelera el proceso

Una de las formas más útiles de integrar IA en este flujo de trabajo es emplearla para generar y ajustar partes del tema. Por ejemplo, puedes pedirle desde el inicio a un modelo de IA que sugiera el contenido y la estructura mínima de archivos necesarios para crear el tema personalizado. También puedes generar fragmentos específicos de CSS y JavaScript para dar estilos a bloques completos o secciones en el sitio.

Además, por ejemplo, al identificar una clase HTML dentro de un tipo de contenido, la IA puede generar el CSS necesario para centrar una imagen o cambiar la tipografía, o dar estilización completa al elemento a partir de una imagen de referencia de un diseño, reduciendo así el tiempo de desarrollo y pruebas.

Activación del tema y limpieza de caché

Una vez creado el tema, puedes activarlo desde la interfaz en: Apariencia → Instalar tema. 

Al seleccionarlo como tema predeterminado, los cambios estarán disponibles en el sitio. No olvides vaciar la caché (“Flush caches”) después de cada modificación, ya que esto asegura que Drupal reconozca los nuevos estilos, scripts o configuraciones aplicadas.

Más allá del diseño: IA en la administración de contenido

La inteligencia artificial no solo sirve para el desarrollo visual, también está transformando la gestión de contenido en Drupal.

Hoy existen módulos experimentales como Experience Builder, que combinan React e IA para generar bloques y secciones directamente desde la interfaz de administración, utilizando simples descripciones en lenguaje natural.

Asimismo, algunas herramientas ya permiten sugerir taxonomías, crear estructuras de contenido o administrar campos mediante comandos conversacionales, agilizando considerablemente el trabajo de los equipos editoriales y técnicos.

Hacia un futuro con Drupal + IA

La inteligencia artificial está redefiniendo la forma en que trabajamos con Drupal. Ya no se trata solo de automatizar tareas, sino de incorporar nuevas formas de pensar, diseñar y construir proyectos que antes requerían mucho más tiempo y esfuerzo. Su integración permite acelerar procesos, reducir errores y abrir oportunidades creativas que potencian el valor de cada desarrollo.

Empezar a experimentar con estas herramientas desde ahora puede marcar la diferencia en tus proyectos. Cada pequeño paso —desde automatizar tareas sencillas hasta integrar módulos impulsados por IA— te acerca a construir experiencias digitales más relevantes, flexibles y alineadas con las necesidades de tus usuarios.

Si no pudiste asistir al workshop o quieres repasar el paso a paso, puedes ver la grabación completa en el canal de YouTube de la comunidad Drupal Colombia.