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, unicon: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, yllms-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.