新しい type: objects を、まもなく非推奨にする予定の既存の json_schema 型の代わりに使用できる テーマ設定のサポートされている型 に導入します。
objects 型のテーマ設定の定義
objects 型のテーマ設定を作成するには、まず設定の名前として使用されるトップレベルのキーを、他のテーマ設定と同様に定義します。
links: ...
次に、その設定に type、default、および schema キーワードを追加します。
links:
type: objects
default: []
schema: ...
type: objects はこれが objects 型の設定であることを示し、default: [] アノテーションは設定のデフォルト値を空の配列に設定します。デフォルト値はオブジェクトの配列に設定することもでき、これは schema が定義された後に実演します。
スキーマを定義するには、まず次のようにスキーマの name を定義します。
links:
type: objects
default: []
schema:
name: link
次に、properties キーワードをスキーマに追加します。これにより、各オブジェクトがどのように見えるかを定義および検証できるようになります。
links:
type: objects
default: []
schema:
name: link
properties:
name: ...
上記の例では、link オブジェクトに name プロパティがあることを示しています。期待されるデータの型を定義するために、各プロパティは type キーワードを定義する必要があります。
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
上記のスキーマ定義は、link オブジェクトに string 型の name プロパティがあり、そのプロパティには文字列値のみが受け入れられることを示しています。現在、次の型がサポートされています。
string: プロパティの値は文字列として保存されます。integer: プロパティの値は整数として保存されます。float: プロパティの値は浮動小数点数として保存されます。boolean: プロパティの値はtrueまたはfalseです。uploads: プロパティの値は添付ファイルの URL です。enum: プロパティの値はchoicesキーワードで定義された値のいずれかである必要があります。links: type: objects default: [] schema: name: link properties: name: type: enum choices: - name 1 - name 2 - name 3categories: プロパティの値は有効なカテゴリ ID の配列です。groups: プロパティの値は有効なグループ ID の配列です。tags: プロパティの値は有効なタグ名の配列です。
スキーマが定義されると、設定のデフォルト値を、次のように YAML で配列を定義することによって設定できます。
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
必須プロパティ
定義されたすべてのプロパティはデフォルトでオプションです。プロパティを必須としてマークするには、プロパティに required: true をアノテーションとして追加するだけです。プロパティは required: false をアノテーションとして追加することによってオプションとしてマークすることもできます。
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
title:
type: string
required: false
カスタムバリデーション
特定のプロパティ型については、プロパティに validations キーワードをアノテーションとして宣言することで、カスタムバリデーションの組み込みサポートがあります。
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
validations:
min: 1
max: 2048
url: true
string 型のバリデーション
min_length: プロパティの最小長。キーワードの値は整数である必要があります。max_length: プロパティの最大長。キーワードの値は整数である必要があります。url: プロパティが有効な URL であることを検証します。キーワードの値はtrue/falseのいずれかです。
integer および float 型のバリデーション
min: プロパティの最小値。キーワードの値は整数である必要があります。max: プロパティの最大値。キーワードの値は整数である必要があります。
tags、groups、および categories 型のバリデーション
min: プロパティのレコードの最小数。キーワードの値は整数である必要があります。max: プロパティのレコードの最大数。キーワードの値は整数である必要があります。
ネストされたオブジェクト構造
オブジェクトには、オブジェクトの配列を含むプロパティを持つこともできます。ネストされたオブジェクト構造を作成するには、プロパティに type: objects と関連付けられた schema 定義をアノテーションとして追加できます。
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 ロケールで設定の説明を追加するには、次の objects 型のテーマ設定が与えられた場合に、次の形式で locales/en.yml ファイルを作成します。
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
このドキュメントはバージョン管理されています - 変更の提案はgithubで行ってください。



