Referencia de Frontmatter
Puedes personalizar individualmente las páginas Markdown y MDX en Starlight estableciendo valores en su frontmatter. Por ejemplo, una página regular podría establecer los campos title
y description
:
---title: Acerca de este proyectodescription: Aprende más sobre el proyecto en el que estoy trabajando.---
¡Bienvenido a la página Acerca de!
Campos de frontmatter
Sección titulada «Campos de frontmatter»title
(requerido)
Sección titulada «title (requerido)»tipo: string
Debes proporcionar un título para cada página. Este se mostrará en la parte superior de la página, en las pestañas del navegador y en los metadatos de la página.
description
Sección titulada «description»tipo: string
La descripción de la página es usada para los metadatos de la página y será recogida por los motores de búsqueda y en las vistas previas de las redes sociales.
tipo: string
Sobreescribe el slug de la página. Consulta “Definiendo slugs personalizados” en la documentación de Astro para más detalles.
editUrl
Sección titulada «editUrl»tipo: string | boolean
Reemplaza la configuración global editLink
. Establece a false
para deshabilitar el enlace “Editar página” para una página específica o proporciona una URL alternativa donde el contenido de esta página es editable.
tipo: HeadConfig[]
Puedes agregar etiquetas adicionales a la etiqueta <head>
de tu página usando el campo head
del frontmatter. Esto significa que puedes agregar estilos personalizados, metadatos u otras etiquetas a una sola página. Similar a la opción global head
.
---title: Acerca de nosotroshead: # Usa una etiqueta <title> personalizada - tag: title content: Título personalizado sobre nosotros---
tableOfContents
Sección titulada «tableOfContents»tipo: false | { minHeadingLevel?: number; maxHeadingLevel?: number; }
Reemplaza la configuración global tableOfContents
.
Personaliza los niveles de encabezado que se incluirán o establece en false
para ocultar la tabla de contenidos en esta página.
---title: Página con solo encabezados H2 en la tabla de contenidostableOfContents: minHeadingLevel: 2 maxHeadingLevel: 2---
---title: Página sin tabla de contenidostableOfContents: false---
template
Sección titulada «template»tipo: 'doc' | 'splash'
por defecto: 'doc'
Establece la plantilla de diseño para esta página.
Las páginas usan el diseño 'doc'
por defecto.
Establece 'splash'
para usar un diseño más amplio sin barras laterales diseñado para las landing pages.
tipo: HeroConfig
Agrega un componente hero en la parte superior de esta página. Funciona bien con template: splash
.
Por ejemplo, esta configuración muestra algunas opciones comunes, incluyendo la carga de una imagen desde tu repositorio.
---title: Mi página de iniciotemplate: splashhero: title: 'Mi proyecto: Cosas estelares más pronto' tagline: Lleva tus cosas a la luna y de vuelta en un abrir y cerrar de ojos. image: alt: Un logotipo brillante, de colores brillantes file: ../../assets/logo.png actions: - text: Cuéntame más link: /getting-started/ icon: right-arrow - text: View on GitHub link: https://github.com/astronaut/my-project icon: external variant: minimal attrs: rel: me---
Puedes mostrar diferentes versiones de la imagen hero en los modos claro y oscuro.
---hero: image: alt: Un logotipo brillante, de colores brillantes dark: ../../assets/logo-dark.png light: ../../assets/logo-light.png---
HeroConfig
Sección titulada «HeroConfig»interface HeroConfig { title?: string; tagline?: string; image?: | { // Ruta relativa a una imagen en tu repositorio. file: string; // Texto alternativo para hacer que la imagen sea accesible a la tecnología de asistencia alt?: string; } | { // Ruta relativa a una imagen en tu repositorio para usar en el modo oscuro. dark: string; // Ruta relativa a una imagen en tu repositorio para usar en el modo claro. light: string; // Texto alternativo para hacer que la imagen sea accesible a la tecnología de asistencia alt?: string; } | { // HTML crudo para usar en el espacio de la imagen. // Podría ser una etiqueta `<img>` personalizada o un `<svg>` en línea. html: string; }; actions?: Array<{ text: string; link: string; variant?: 'primary' | 'secondary' | 'minimal'; icon?: string; attrs?: Record<string, string | number | boolean>; }>;}
tipo: { content: string }
Muestra un banner de anuncio en la parte superior de esta página.
El valor content
puede incluir HTML para enlaces u otro contenido.
Por ejemplo, esta página muestra un banner que incluye un enlace a example.com
.
---title: Página con un bannerbanner: content: | ¡Acabamos de lanzar algo genial! <a href="https://example.com">Checalo</a>---
lastUpdated
Sección titulada «lastUpdated»type: Date | boolean
Sobrescribe la opción global lastUpdated
. Si se especifica una fecha, debe ser una marca de tiempo YAML válida y sobrescribirá la fecha almacenada en el historial de Git para esta página.
---title: Página con una fecha de última actualización personalizadalastUpdated: 2022-08-09---
tipo: boolean | string | { link?: string; label?: string }
Anula la opción global de pagination
. Si se especifica un string, el texto del enlace generado se reemplazará, y si se especifica un objeto, tanto el enlace como el texto serán anulados.
---# Ocultar el enlace de la página anteriorprev: false---
---# Sobrescribir el texto del enlace de la página anteriorprev: Continuar con el tutorial---
---# Sobrescribir tanto el enlace de la página anterior como el textoprev: link: /página-no-relacionada/ label: Echa un vistazo a esta otra página---
tipo: boolean | string | { link?: string; label?: string }
Lo mismo que prev
, pero para el enlace de la página siguiente.
---
# Ocultar el enlace de la página siguiente
next: false
pagefind
Sección titulada «pagefind»tipo: boolean
por defecto: true
Establece si esta página debe incluirse en el índice de búsqueda de Pagefind. Establece en false
para excluir una página de los resultados de búsqueda:
---# Ocultar esta página del índice de búsquedapagefind: false---
tipo: boolean
por defecto: false
Establece si esta página debe considerarse como un borrador y no incluirse en las compilaciones de producción y grupos de enlaces autogenerados. Establece en true
para marcar una página como borrador y hacerla visible solo durante el desarrollo.
---# Excluye esta página de las compilaciones de produccióndraft: true---
sidebar
Sección titulada «sidebar»tipo: SidebarConfig
Controla cómo se muestra esta página en el sidebar al utilizar un grupo de enlaces generado automáticamente.
SidebarConfig
Sección titulada «SidebarConfig»interface SidebarConfig { label?: string; order?: number; hidden?: boolean; badge?: string | BadgeConfig; attrs?: Record<string, string | number | boolean | undefined>;}
tipo: string
por defecto: El title
de la página
Establece la etiqueta para esta página en la barra lateral cuando se muestra en un grupo de enlaces generado automáticamente.
---title: Acerca de este proyectosidebar: label: Acerca de---
tipo: number
Controla el orden de esta página al ordenar un grupo de enlaces generado automáticamente. Los números más bajos se muestran más arriba en el grupo de enlaces.
---title: Página para mostrar primerosidebar: order: 1---
tipo: boolean
por defecto: false
Previene que esta página se incluya en un grupo de enlaces generado automáticamente en la barra lateral.
---title: Página para ocultar de la barra lateral autogeneradasidebar: hidden: true---
tipo: string | BadgeConfig
Agrega una insignia a la página en la barra lateral cuando se muestra en un grupo de enlaces generado automáticamente.
Cuando se usa un string, la insignia se mostrará con el color de acento predeterminado.
Opcionalmente, pasa un objeto BadgeConfig
con los campos text
, variant
y class
para personalizar la insignia.
---title: Página con una insigniasidebar: # Usa la variante predeterminada que coincide con el color de acento de tu sitio badge: Nuevo---
---title: Página con una insigniasidebar: badge: text: Experimental variant: caution---
type: Record<string, string | number | boolean | undefined>
Atributos HTML para agregar al enlace de la página en la barra lateral cuando se muestra en un grupo de enlaces generado automáticamente.
---title: Página que se abre en una nueva pestañasidebar: # Abre la página en una nueva pestaña attrs: target: _blank---
Personaliza el esquema del frontmatter
Sección titulada «Personaliza el esquema del frontmatter»El esquema del frontmatter para la colección de contenido docs
de Starlight se configura en src/content/config.ts
usando el auxiliar docsSchema()
:
import { defineCollection } from 'astro:content';import { docsSchema } from '@astrojs/starlight/schema';
export const collections = { docs: defineCollection({ schema: docsSchema() }),};
Aprende más sobre los esquemas de colección de contenido en “Definir un esquema de colección” en la documentación de Astro.
docsSchema()
toma las siguientes opciones:
tipo: esquema Zod o función que devuelve un esquema Zod
por defecto: z.object({})
Extiende el esquema de Starlight con campos adicionales estableciendo extend
en las opciones de docsSchema()
.
El valor debe ser un esquema Zod.
En el siguiente ejemplo, proporcionamos un tipo más estricto para description
para hacerlo requerido y agregamos un nuevo campo opcional category
:
import { defineCollection, z } from 'astro:content';import { docsSchema } from '@astrojs/starlight/schema';
export const collections = { docs: defineCollection({ schema: docsSchema({ extend: z.object({ // Hacer un campo integrado requerido en lugar de opcional. description: z.string(), // Agrega un nuevo campo al esquema. category: z.enum(['tutorial', 'guide', 'reference']).optional(), }), }), }),};
Para tomar ventaja del auxiliar image()
de Astro, usa una función que devuelva tu extensión de esquema:
import { defineCollection, z } from 'astro:content';import { docsSchema } from '@astrojs/starlight/schema';
export const collections = { docs: defineCollection({ schema: docsSchema({ extend: ({ image }) => { return z.object({ // Agrega un campo que debe resolverse a una imagen local. cover: image(), }); }, }), }),};