Download the PHP package jamie-humm/kirby-super-structure without Composer
On this page you can find all versions of the php package jamie-humm/kirby-super-structure. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download jamie-humm/kirby-super-structure
More information about jamie-humm/kirby-super-structure
Files in jamie-humm/kirby-super-structure
Package kirby-super-structure
Short Description Kirby Super Structure: a structure field with per-field translate: false support and stable row UUIDs for multi-language sites.
License MIT
Informations about the package kirby-super-structure
Kirby Super Structure
A structure field for multi-language sites that supports translate: false on
its nested fields and gives every row a stable _uuid.
Beta. This plugin has had limited testing. Please test it thoroughly with your own content flows before using it in production, and report issues.
Not recommended for existing content. Don't convert an existing
structurefield that already holds content tosuperstructure. Existing rows have no_uuid, so they can't be matched across languages, and syncing is skipped until the default language is saved once. Use it for new fields.
Installation
Or copy this folder to site/plugins/kirby-super-structure.
Requires Kirby 5 and PHP 8.2+.
This is an additional field type. It does not replace or modify Kirby's core
structurefield; blueprints usingtype: structurebehave exactly as before.
Usage
How it works
- The default language is the single source of truth for which rows exist, their
order, and all
translate: falsefields. - Secondary languages can't add, remove, duplicate or reorder rows. This is intentional. They only own the translatable fields of existing rows.
- Synced fields are disabled in secondary languages in the Panel.
- Rows are matched across languages by
_uuid. - A row that is new to a language starts as a copy of the default language row;
translate: falsefields are always overwritten from the default. - Changes to the default language are pushed to existing translations
(
latestandchangesversions) via*.update:afterhooks.
Referencing entries by UUID
Every row has a stable _uuid that is identical in all languages, so it can be
stored as a reference from other fields.
Blueprint: a select field listing the rows and saving their UUID:
Template: find the row by its UUID:
Note that the key is _uuid, with a leading underscore.
Panel behavior
- Rows are styled like the pages field's list items (no table header,
separate rounded rows). Everything is scoped to
.k-field-type-superstructure. Because of this, it's better to limitcolumnsto one or two entries. You can setappearance: structureto get the core look. - In non-default languages the Panel hides add, batch edit, delete all,
duplicate, delete and sorting controls (
index.css). This is cosmetic; the server discards structural changes anyway.
Limitations
- Existing rows without a
_uuidare not synced until the default language is saved once. - Only top-level nested fields are supported (not fields inside nested structures).
License
MIT © Jamie Hunter