Saltar al contenido
Meeko
Escribe para buscar en las guías y en la referencia de la API. Ábrela desde cualquier página con / o Ctrl K; muévete con las flechas y entra con Intro.
Empezar

Contenidos

En esta página

sitemapXml

función Desde 1.8.0

Escribe un sitemap (protocolo sitemaps.org 0.9) con URL absolutas: origin más cada ruta, con <lastmod>, <changefreq> y <priority> cuando la URL los tiene y un <xhtml:link rel="alternate" hreflang> por cada una de sus alternates, con el espacio de nombres xhtml sólo si alguna los usa. Escapa el XML y no ordena las URL. Es la misma función con la que meeko build escribe sitemap.xml; úsala cuando el sitemap se sirve desde una base de datos (sitemap: false en la configuración), sin escribir el XML a mano.

ts
import { sitemapXml } from "@meekojs/meeko/framework";

Código fuente src/framework/sitemap-xml.ts:59

Firma #

ts
function sitemapXml(origin: string, urls: readonly (string | SitemapResolvedUrl)[]): string

Parámetros #

origin string

Origen público, como "https://example.com".

urls readonly (string | SitemapResolvedUrl)[]

Rutas (pathname) o URL con sus campos y versiones en otros idiomas.

Devuelve #

string

El documento XML.

Lanza #

Error

Si una alternativa tiene un hreflang inválido o un pathname que no empieza por /.

Ejemplo #

ts
// server/middleware/sitemap.ts
import { sitemapXml } from "@meekojs/meeko/framework";
import { defineServerMiddleware } from "@meekojs/meeko/server";

export default defineServerMiddleware(async (request, next) => {
  if (new URL(request.url).pathname !== "/sitemap.xml") return next(request);
  const pages = await db.pages.list();
  const xml = sitemapXml("https://example.com", pages.map((page) => ({
    pathname: page.path,
    lastmod: page.updatedAt,
    alternates: [
      { hreflang: "es", pathname: page.path },
      { hreflang: "en", pathname: `/en${page.path}` },
      { hreflang: "x-default", pathname: page.path },
    ],
  })));
  return new Response(xml, { headers: { "content-type": "application/xml; charset=utf-8" } });
});

Véase también #

¿Te sirvió esta página?

Añadir un comentario

Se envía al elegir «Sí» o «No». Solo se guardan la página, tu respuesta y el comentario: ni cookies ni datos tuyos.

0 de 2000 caracteres

Editar en GitHub: packages/meeko/src/framework/sitemap-xml.ts