Saltar al contenido
duxt

Colecciones

Qué construye Content a partir de las fuentes, y las cuatro cosas que añade el esquema.

Una colección es la unidad de obtención de Content: un glob, un lugar de donde leerlo y un esquema. duxt declara una por repositorio × ref, así que un sitio con una carpeta tiene una colección y un sitio con dos repositorios en tres refs tiene seis.

Sus nombres son datos, no una constante. Un sitio con dos repositorios tiene docs_duxt y docs_workflows y ninguna colección llamada docs — por eso el tema lee el nombre de la colección del manifiesto en lugar de fijarlo en el código, y por eso una consulta propia debería hacer lo mismo:

<script setup lang="ts">
const { collection } = useDuxtCollection();
const { data } = await useAsyncData(() =>
  queryCollection(collection.value).all()
);
</script>

Qué añade el esquema

Content solo almacena lo que un esquema declara, así que cuatro cosas que el tema necesita se declaran explícitamente. La lista completa está en la referencia de frontmatter; las razones están aquí:

  • icon, layout, navigation — campos del tema. Sin el esquema, un icon: en el frontmatter se descarta en silencio antes de que la barra lateral llegue a verlo.
  • rawbody — el Markdown tal como se escribió. Dos cosas lo necesitan: el botón que entrega una página a un modelo, y llms-full.txt.
  • redirectFrom — convertido en reglas de ruta por la compilación; véase Mover una página.
  • sitemap — lo que mete estas páginas en el sitemap. Una colección tiene que declarar el campo, o el sitemap listará las rutas del sitio y ni una sola página de documentación.

Fragmentos

_partials/ en la carpeta de documentación de cualquier fuente alimenta una colección compartida, y :partial{name="install"} en cualquier página de cualquier fuente lo representa. Content no trae ninguna directiva de inclusión, y a través de varios repositorios esa carencia no tiene solución alguna — una nota de instalación que debe decir lo mismo en tres proyectos se copia en tres proyectos y se desvía.

Los fragmentos llevan la misma dimensión de idioma que las páginas: docs/_partials/ es duxt_partials, docs/de/_partials/ es duxt_partials_de, y :partial recorre la misma cadena de respaldo que recorrió la página en la que está. Tiene que ser la misma cadena: que una página y los bloques que incluye caigan en idiomas distintos es justo como se acaba con una página traducida a medias sin que nada lo indique.

Los fragmentos quedan excluidos de las colecciones de páginas. De lo contrario cada fragmento sería también una página: en la barra lateral, en la búsqueda, en llms.txt.

Los borradores son archivos, no banderas

Un borrador es deploying.draft.md, no draft: true en el frontmatter. La bandera es la escritura obvia y la que no puede funcionar: el contenido de una colección se declara antes de que Content haya leído un solo archivo — en una fuente remota, antes de que se haya descargado — así que en ese momento nada sabe lo que dice ningún frontmatter. Un nombre de archivo sí se conoce. Content elimina .draft de la URL, de modo que la página se sirve en /deploying en el servidor de desarrollo y simplemente no está en la compilación.

¿Le ha resultado útil esta página?