Feito com Chinaski

Tipos de Block

Todo block no Chinaski, de uma faixa de call-to-action a uma tabela de preços, pertence a um tipo, o vocabulário que informa ao sistema quais campos ele aceita e como ele é renderizado. Esta página cobre o próprio registro de tipos: os tipos embutidos que vêm de fábrica, como registrar os seus e as regras que mantêm os dois em sincronia.

O registro

Os tipos de block vivem em uma tabela gerenciada, a fonte única de verdade sobre quais tipos existem. O que o registro decide:

  • Se um block desse tipo pode ser criado (criar um block exige que seu tipo esteja registrado; mudar um block existente para um tipo não registrado é rejeitado).
  • O que aparece no editor de Blocks, nas telas da Biblioteca e nos dropdown(s) de tipo de autoria em outros lugares da administração.
  • Quais tipos de block um arquivo de importação de blocks pode referenciar.

Na inicialização, o registro é mantido em sincronia com o vocabulário fornecido com o software: os tipos padrão são reinseridos, preservando quaisquer edições que você tenha feito em seus rótulos ou descrições. O conjunto fornecido, incluído em ordem alfabética na tela Tipos de Block, é deliberadamente amplo:

accordion, audio, button_group, callout, citations, code_block, columns, cta, divider, embed, faq, feature_grid, form, gallery, grid, heading, hero, image, logo_bar, newsletter, page_list, pricing_table, promo, quote, schedule, spacer, stat, table, team, testimonial, text, timeline, video

Criando um tipo de block personalizado (o formulário)

Na tela Tipos de Block (somente Administradores), o formulário Registrar Tipo de Block Personalizado aceita três campos:

  • Nome: apenas letras minúsculas, dígitos, hífens e sublinhados; isso se torna o identificador do tipo (o que vive na coluna type e nos formulários).
  • Rótulo: o nome legível usado em listas (assume como padrão a forma curta em maiúsculas; você pode sobrescrevê-lo).
  • Descrição: texto livre opcional.

Enviar registra o tipo instantaneamente; não há arquivos de renderização a adicionar no servidor. As mensagens flash do sistema fazem o resto:

  • “Block type registered” se ambos os arquivos exigidos já existirem (veja abaixo).
  • A mensagem flash informa exatamente quais caminhos de arquivo estão faltando. O tipo registrado permanece no registro; ele simplesmente não renderiza nem mostra seu formulário administrativo até que esses dois arquivos existam.

O que um tipo personalizado precisa

Dois arquivos, colocados por você:

  • builder/block_templates/<type>.tt: o template do builder, o que é renderizado no site (veja Blocks in Themes para o contrato de variáveis).

  • templates/admin/blocks/types/<type>.html.ep: o formulário administrativo, quais campos o editor do block expõe (o que muitas vezes significa seus campos planos, ou um editor de linhas JSON para dados repetitivos no estilo grid/gallery/columns).

  • O registro não move os blocks. O tipo determina quais campos aparecem no formulário administrativo; o template do builder decide a renderização, e o nome do block, não seu tipo, é o que os {{block:name​}} referenciam.

  • Tipos personalizados não recebem scaffolding. O formulário de registro diz quais dois caminhos de arquivo criar, mas nunca fabrica os templates para você.

Excluindo um tipo

Dois tipos de block estão na tela, e as duas categorias se comportam de modo diferente:

  • Tipos embutidos não podem ser excluídos. O processo de inicialização re-semia a lista padrão a cada boot, e o conteúdo existente de um tipo embutido não pode ficar sem editabilidade.
  • Tipos personalizados podem ser excluídos, mas apenas vazios. Qualquer block ainda no tipo bloqueia a exclusão com um erro (“blocks of this type still exist”); você deve mandar para a lixeira ou destruir cada block do tipo primeiro (depois, na tela Blocks, apenas tipos personalizados registrados podem ser excluídos/removidos do registro).

A tela do registro, portanto, permanece limpa: toda entrada nela é ou um tipo ativo que os formulários administrativos referenciam, ou um personalizado pronto para exclusão quando esvaziado.

Adicionando um tipo sem programar blocks do zero

Criar uma variante de um tipo existente, compartilhando os mesmos campos mas com outro nome e outra intenção de estilo, é legítimo:

  1. Registre o novo nome na tela Tipos de Block.
  2. Copie o template de block do builder (<name>.tt) e o partial de formulário administrativo (<type>.html.ep) do tipo mais próximo do que você precisa; esses dois arquivos copiados são o mesmo contrato.
  3. Ajuste os campos do formulário e o HTML do template conforme necessário.

O mesmo cuidado se aplica vindo de fora do conjunto embutido (veja a seção da página Blocks sobre quais campos aceitam HTML vs. auto-escape).

A versão curta

Os tipos embutidos são o vocabulário fixo para o qual os templates de block e os formulários administrativos são construídos; o registro decide quais tipos existem; administradores podem registrar os seus (copiando à mão dois arquivos de template), e um tipo personalizado pode ser excluído quando esvaziado, enquanto os embutidos permanecem perpetuamente porque a semilla os executa a cada inicialização.

Leia este site em