Coleções
O que o Content constrói a partir das fontes, e as quatro coisas que o esquema acrescenta.
Uma coleção é a unidade de obtenção do Content: um glob, um sítio de onde o ler e um esquema. O duxt declara uma por repositório × ref, por isso um site com uma pasta tem uma coleção e um site com dois repositórios em três refs tem seis.
Os seus nomes são dados, não uma constante. Um site com dois repositórios
tem docs_duxt e docs_workflows e nenhuma coleção chamada docs — é por isso
que o tema lê o nome da coleção do manifesto em vez de o fixar no código, e por
isso uma consulta tua deve fazer o mesmo:
<script setup lang="ts">
const { collection } = useDuxtCollection();
const { data } = await useAsyncData(() =>
queryCollection(collection.value).all()
);
</script>
O que o esquema acrescenta
O Content só guarda o que um esquema declara, por isso quatro coisas de que o tema precisa são declaradas explicitamente. A lista completa está na referência de frontmatter; as razões estão aqui:
icon,layout,navigation— campos do tema. Sem o esquema, umicon:no frontmatter é descartado em silêncio antes de a barra lateral sequer o ver.rawbody— o Markdown tal como foi escrito. Duas coisas precisam dele: o botão que entrega uma página a um modelo, e ollms-full.txt.redirectFrom— transformado em regras de rota pela compilação; ver Mover uma página.sitemap— aquilo que põe estas páginas no sitemap. Uma coleção tem de declarar o campo, ou o sitemap lista as rotas do site e nem uma única página de documentação.
Fragmentos
_partials/ na pasta de documentação de qualquer fonte alimenta uma coleção
partilhada, e :partial{name="install"} em qualquer página de qualquer fonte
apresenta-o. O Content não traz nenhuma diretiva de inclusão, e ao longo de
vários repositórios essa lacuna não tem contorno nenhum — uma nota de instalação
que tem de dizer o mesmo em três projetos é copiada para três projetos e
diverge.
Os fragmentos carregam a mesma dimensão de idioma que as páginas:
docs/_partials/ é duxt_partials, docs/de/_partials/ é duxt_partials_de,
e :partial percorre a mesma cadeia de recurso que a
página onde ele está percorreu. Tem de ser a mesma cadeia — uma página e os
blocos que ela inclui a recorrerem a idiomas diferentes é exatamente como se
chega a uma página meio traduzida sem que nada o diga.
Os fragmentos são excluídos das próprias coleções de páginas. Caso contrário
cada fragmento seria também uma página: na barra lateral, na pesquisa, no
llms.txt.
Rascunhos são ficheiros, não sinalizadores
Um rascunho é deploying.draft.md, não draft: true no frontmatter. O
sinalizador é a escrita óbvia e a que não pode funcionar: o conteúdo de uma
coleção é declarado antes de o Content ter lido um único ficheiro — numa fonte
remota, antes sequer de a ter descarregado — por isso nada nesse momento sabe o
que diz qualquer frontmatter. Um nome de ficheiro é conhecido. O Content retira
.draft do URL, pelo que a página é servida em /deploying no servidor de
desenvolvimento e simplesmente não existe na compilação.