Global Field Definitions
If you have a lot of blueprints that often use the same fields, you will love Kirby's new global field definitions aka blueprint snippets. Once defined, global field definitions can be reused in all of your blueprints, and their instances can even be extended.
Defining a new field
Create a new
fields folder inside
/site/blueprints/. All your field definitions go into this folder.
Create a field definition, e.g. a date field and save as
# /site/blueprints/fields/date.yml label: Date type: date default: now
or an image select field:
# /site/blueprints/fields/imageselect.yml label: Select an image type: select options: images
Using a field definition
Now you can reference your field definitions in your blueprints like so:
# /site/blueprints/mypage.yml … fields: title: label: Title type: text date: date myimage: imageselect …
This gives you full control over your field names.
Extending a field definition
You can easily extend a field definition if you want to overwrite the default behaviour, for example, give the field another label or set another default. Here is an example:
# /site/blueprints/mypage.yml … fields: title: label: Title type: text date: extends: date label: Published default: false myimage: extends: imageselect label: Cover Image
It is also possible to define a set of fields as a field group and then import the whole group:
# /site/blueprints/fields/metadata.yml type: group fields: author: label: Created by type: user width: 1/3 readonly: true created: label: Created on type: date width: 1/3 readonly: true default: now updated: label: Updated on type: date width: 1/3 readonly: true default: now override: true
# /site/blueprints/mypage.yml fields: title: label: Title type: text metadata: extends: metadata
Of course you can extend and override any option of one of the group's fields:
# /site/blueprints/mypage.yml fields: title: label: Title type: text metadata: extends: metadata fields: author: label: Creator created: default: tomorrow updated: default: tomorrow