flows.md · documentação

Modelos#

Num site, quase todas as páginas têm a mesma coisa em volta: o menu em cima, o rodapé embaixo, às vezes uma coluna lateral. Copiar isso em cada página funciona até o dia em que o menu muda — e aí são dez páginas para consertar.

Um modelo é uma página comum que tem um :::slot. O que está em volta do slot é o que as páginas têm em comum. As outras páginas vestem o modelo: quem lê recebe a página dentro dele.

Escrever um modelo#

:::nav
**[Estúdio](./)**
---
- [Trabalho](./trabalho)
- [Sobre](./sobre)
:::

:::slot
:::

:::footer
Feito aqui.
:::

Os links de um modelo valem a partir da página que o declarou — a raiz do site. ./sobre é o "sobre" daquele site em toda página que veste o modelo, e o mesmo modelo serve dois sites, cada um com os seus links. O link para a página que está sendo lida fica marcado.

Onde os modelos moram#

Na página templates do espaço: o modelo chamado site é a página /@voce/templates/site. É uma página como as outras — tem editor, idiomas e histórico — e é por isso que esta página aqui, /@docs/templates, também guarda os modelos do próprio @docs. Os modelos dos seus espaços aparecem juntos em /~templates, ao lado das suas views.

Vestir o modelo#

Uma cerca com o nome do modelo, uma vez, na página raiz do site:

site

Um nome, não um endereço: nada de caminho, nada de til.

Vale para a página e para todas as que estão abaixo dela. A ordem é a dos temas: a cerca da própria página, depois a da página mais próxima acima, depois nada.

Na cerca O que faz
site veste o modelo site deste espaço (docs/guia também vale: uma página dentro de outra)
cascade: false só esta página veste, as de baixo não
none esta página (e as de baixo) não vestem nada

Uma página que tem slot nunca veste um modelo por herança — só quando ela mesma diz o nome de outro.

Trocar uma parte numa página#

O modelo pode ter lugares com nome, cada um com o que aparece quando ninguém diz outra coisa:

:::slot name:cta
## Vamos conversar
[Escreva para a gente](./contato)
:::

Uma página troca esse pedaço com :::fill:

:::fill name:cta
## Estamos contratando
[Ver as vagas](./vagas)
:::

Os nomes são main (o conteúdo da página), hero, aside, top, bottom e cta. Um :::fill para um lugar que o modelo não tem fica onde foi escrito — nada do que você escreveu some.

Um modelo que veste outro#

O modelo da documentação pode vestir o do site: o do site dá o menu e o rodapé, o da documentação acrescenta a coluna lateral em volta do slot.

site


:::section width:wide
:::split rail:16 sticky:first
**Guia**

[Começar](./comecar)
---
:::slot
:::
:::
:::

Ver como fica#

O editor mostra o conteúdo da própria página. Para ver como ela é servida, dentro do modelo, abra Layout no menu do editor e escolha Ver como leitor — ou acrescente ?as=reader ao endereço.

Um exemplo que você pode abrir#

A vitrine Orbit tem três páginas e um só menu: ele está em templates / orbit, com versão em inglês, e as três o vestem dizendo só orbit.