Estamos introduzindo um novo type: objects para os tipos suportados para configurações de tema que pode ser usado para substituir o tipo json_schema existente, que pretendemos descontinuar em breve.
Definindo uma configuração de tema do tipo objetos
Para criar uma configuração de tema do tipo objetos, primeiro defina uma chave de nível superior, assim como qualquer configuração de tema, que será usada como o nome da configuração.
links: ...
Em seguida, adicione as palavras-chave type, default e schema à configuração.
links:
type: objects
default: []
schema: ...
type: objects indica que esta será uma configuração do tipo objetos, enquanto a anotação default: [] define o valor padrão da configuração como um array vazio. Observe que o valor padrão também pode ser definido como um array de objetos, o que demonstraremos assim que o schema for definido.
Para definir o esquema, primeiro defina o name do esquema desta forma:
links:
type: objects
default: []
schema:
name: link
Em seguida, adicionaremos a palavra-chave properties ao esquema, o que nos permitirá definir e validar a aparência de cada objeto.
links:
type: objects
default: []
schema:
name: link
properties:
name: ...
No exemplo acima, estamos afirmando que o objeto link possui uma propriedade name. Para definir o tipo de dado esperado, cada propriedade precisa definir a palavra-chave type.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
A definição de esquema acima afirma que o objeto link possui uma propriedade name do tipo string, o que significa que apenas valores de string serão aceitos para a propriedade. Atualmente, os seguintes tipos são suportados:
string: O valor da propriedade é armazenado como uma string.integer: O valor da propriedade é armazenado como um inteiro.float: O valor da propriedade é armazenado como um float.boolean: O valor da propriedade étrueoufalse.uploads: O valor da propriedade é a URL do anexoenum: O valor da propriedade deve ser um dos valores definidos na palavra-chavechoices.links: type: objects default: [] schema: name: link properties: name: type: enum choices: - name 1 - name 2 - name 3categories: O valor da propriedade é um array de IDs de categoria válidos.groups: O valor da propriedade é um array de IDs de grupo válidos.tags: O valor da propriedade é um array de nomes de tag válidos.
Com o esquema definido, o valor padrão da configuração pode agora ser definido definindo um array em yaml como este:
links:
type: objects
default:
- name: link 1
title: link 1 title
- name: link 2
title: link 2 title
schema:
name: link
properties:
name:
type: string
title:
type: string
Propriedades obrigatórias
Todas as propriedades definidas são opcionais por padrão. Para marcar uma propriedade como obrigatória, basta anotar a propriedade com required: true. Uma propriedade também pode ser marcada como opcional anotando a propriedade com required: false.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
title:
type: string
required: false
Validações personalizadas
Para certos tipos de propriedade, há suporte integrado para validações personalizadas que podem ser declaradas anotando a propriedade com a palavra-chave validations.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
validations:
min: 1
max: 2048
url: true
Validações para tipos string
min_length: Comprimento mínimo da propriedade. O valor da palavra-chave deve ser um inteiro.max_length: Comprimento máximo da propriedade. O valor da palavra-chave deve ser um inteiro.url: Valida se a propriedade é uma URL válida. O valor da palavra-chave pode sertrue/false.
Validações para tipos integer e float
min: Valor mínimo da propriedade. O valor da palavra-chave deve ser um inteiro.max: Valor máximo da propriedade. O valor da palavra-chave deve ser um inteiro.
Validações para tipos tags, groups e categories
min: Número mínimo de registros para a propriedade. O valor da palavra-chave deve ser um inteiro.max: Número máximo de registros para a propriedade. O valor da palavra-chave deve ser um inteiro.
Estrutura de objetos aninhados
Um objeto também pode ter uma propriedade que contém um array de objetos. Para criar uma estrutura de objetos aninhados, uma propriedade também pode ser anotada com type: objects e a definição de schema associada.
sections:
type: objects
default:
- name: section 1
links:
- name: link 1
url: /some/url
- name: link 2
url: /some/other/url
schema:
name: section
properties:
name:
type: string
required: true
links:
type: objects
schema:
name: link
properties:
name:
type: string
url:
type: string
Descrição da configuração e localização
Para adicionar uma descrição para a configuração no locale en, crie um arquivo locales/en.yml com o seguinte formato, dada a seguinte configuração de tema do tipo objetos.
sections:
type: objects
default:
- name: section 1
links:
- name: link 1
url: /some/url
- name: link 2
url: /some/other/url
schema:
name: section
properties:
name:
type: string
required: true
links:
type: objects
schema:
name: link
properties:
name:
type: string
url:
type: string
en:
theme_metadata:
settings:
sections:
description: Esta é uma descrição para a configuração de tema sections
schema:
properties:
name:
label: Nome
description: A descrição para a propriedade
links:
name:
label: Nome
description: A descrição para a propriedade
url:
label: URL
description: A descrição para a propriedade
Este documento é controlado por versão - sugira alterações no github.



