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 objects
Para criar uma configuração de tema do tipo objects, primeiro defina uma chave de nível superior 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 objects, 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 schema, primeiro defina o name do schema assim:
links:
type: objects
default: []
schema:
name: link
Em seguida, adicionaremos a palavra-chave properties ao schema, que nos permitirá definir e validar como cada objeto deve ser.
links:
type: objects
default: []
schema:
name: link
properties:
name: ...
No exemplo acima, estamos afirmando que o objeto link tem uma propriedade name. Para definir o tipo de dados esperado, cada propriedade precisa definir a palavra-chave type.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
A definição de schema acima afirma que o objeto link tem 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.enum: 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 schema definido, o valor padrão da configuração pode agora ser definido definindo um array em yaml assim:
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 objects.
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: This is a description for the sections theme setting
schema:
properties:
name:
label: Name
description: The description for the property
links:
name:
label: Name
description: The description for the property
url:
label: URL
description: The description for the property
Este documento é controlado por versão - sugira alterações no github.



