Saltar para o conteúdo
duxt

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, um icon: 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 o llms-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.

Esta página foi útil?