Estamos introduciendo un nuevo type: objects en los tipos admitidos para la configuración de temas que se puede utilizar para reemplazar el tipo json_schema existente, que pretendemos descontinuar pronto.
Definir una configuración de tema de tipo objetos
Para crear una configuración de tema de tipo objetos, primero defina una clave de nivel superior como cualquier configuración de tema, que se utilizará como el nombre de la configuración.
links: ...
A continuación, agregue las palabras clave type, default y schema a la configuración.
links:
type: objects
default: []
schema: ...
type: objects indica que esta será una configuración de tipo objetos, mientras que la anotación default: [] establece el valor predeterminado de la configuración en una matriz vacía. Tenga en cuenta que el valor predeterminado también se puede establecer en una matriz de objetos, lo que demostraremos una vez que se haya definido el schema.
Para definir el esquema, primero defina el name del esquema de la siguiente manera:
links:
type: objects
default: []
schema:
name: link
A continuación, agregaremos la palabra clave properties al esquema, lo que nos permitirá definir y validar cómo debe verse cada objeto.
links:
type: objects
default: []
schema:
name: link
properties:
name: ...
En el ejemplo anterior, estamos indicando que el objeto link tiene una propiedad name. Para definir el tipo de datos que se espera, cada propiedad debe definir la palabra clave type.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
La definición del esquema anterior indica que el objeto link tiene una propiedad name de tipo string, lo que significa que solo se aceptarán valores de cadena para la propiedad. Actualmente, los siguientes tipos son compatibles:
string: El valor de la propiedad se almacena como una cadena.integer: El valor de la propiedad se almacena como un entero.float: El valor de la propiedad se almacena como un flotante.boolean: El valor de la propiedad estrueofalse.enum: El valor de la propiedad debe ser uno de los valores definidos en la palabra clavechoices.links: type: objects default: [] schema: name: link properties: name: type: enum choices: - name 1 - name 2 - name 3categories: El valor de la propiedad es una matriz de identificadores de categoría válidos.groups: El valor de la propiedad es una matriz de identificadores de grupo válidos.tags: El valor de la propiedad es una matriz de nombres de etiquetas válidos.
Con el esquema definido, el valor predeterminado de la configuración ahora se puede establecer definiendo una matriz en yaml de la siguiente manera:
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
Propiedades requeridas
Todas las propiedades definidas son opcionales por defecto. Para marcar una propiedad como requerida, simplemente anote la propiedad con required: true. Una propiedad también se puede marcar como opcional anotándola con required: false.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
title:
type: string
required: false
Validaciones personalizadas
Para ciertos tipos de propiedades, existe soporte incorporado para validaciones personalizadas que se pueden declarar anotando la propiedad con la palabra clave validations.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
validations:
min: 1
max: 2048
url: true
Validaciones para tipos string
min_length: Longitud mínima de la propiedad. El valor de la palabra clave debe ser un entero.max_length: Longitud máxima de la propiedad. El valor de la palabra clave debe ser un entero.url: Valida que la propiedad sea una URL válida. El valor de la palabra clave puede sertrue/false.
Validaciones para tipos integer y float
min: Valor mínimo de la propiedad. El valor de la palabra clave debe ser un entero.max: Valor máximo de la propiedad. El valor de la palabra clave debe ser un entero.
Validaciones para tipos tags, groups y categories
min: Número mínimo de registros para la propiedad. El valor de la palabra clave debe ser un entero.max: Número máximo de registros para la propiedad. El valor de la palabra clave debe ser un entero.
Estructura de objetos anidados
Un objeto también puede tener una propiedad que contenga una matriz de objetos. Para crear una estructura de objetos anidados, una propiedad también puede anotarse con type: objects y la definición de schema asociada.
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
Descripción de la configuración y localización
Para agregar una descripción de la configuración en la configuración regional en, cree un archivo locales/en.yml con el siguiente formato, dada la siguiente configuración de tema de 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: 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 está controlado por versiones. Sugiera cambios en github.



