Flex Objects in Grav

Flex Objects sind Gravs Schnittstelle für strukturierte, dateibasierte Daten. Auf dieser Installation verwaltet das aktivierte Plugin drei Directories: Seiten, Benutzerkonten und Benutzergruppen. Die Seite zeigt ausschließlich die öffentliche Pages-Collection; Konten und Gruppen bleiben im Admin-Bereich.

1. Aktive Directories

Die Flex-Objects-Plugin-Konfiguration registriert Directories über ihre Blueprints:

directories:
  - 'blueprints://flex-objects/pages.yaml'
  - 'blueprints://flex-objects/user-accounts.yaml'
  - 'blueprints://flex-objects/user-groups.yaml'

Die Live-Ausgabe darunter zeigt den auf dieser Website aktiv verwendeten, öffentlich unkritischen Directory-Typ.

2. Öffentliche Pages-Collection abfragen

Die bestehende pages-Collection ist ein echter Flex-Directory. Im Theme kann sie gelesen, sortiert und begrenzt ausgegeben werden:

[set pages = grav.get('flex').directory('pages').getCollection()]

[for record in pages.orderBy({'title': 'ASC'})|slice(0, 6)]
  [a href="[record.route]"][record.title][/a]
[endfor]

Die Ergebnis-Karte verwendet diese Abfrage live und listet die vorhandenen öffentlichen Pages mit ihren echten Routen auf.

3. Sichere Ausgabe im Frontend

Bei Flex Objects gilt das Prinzip der Datenminimierung: Nur Felder ausgeben, die für Besucher bestimmt sind. Konten, Rollen, E-Mail-Adressen, Berechtigungen und interne Metadaten gehören nicht in öffentliche Templates.

Für jeden öffentlichen Eintrag:
- Titel: [record.title]
- Route: [record.route]
- Linkziel: [record.route]
- Linktext: Seite öffnen

Verwaltung im Admin-Bereich

Im Grav-Admin stehen die aktiven Flex-Objects-Directories für Pages, User Accounts und User Groups bereit. Neue eigene Directories sollten erst mit einem passenden Blueprint, einer Datenklasse und einer Berechtigungsprüfung eingerichtet werden. So bleiben Datenmodell und öffentliche Darstellung sauber getrennt.

Wichtig: Das Flex-Objects-Plugin ist aktiv. Diese Dokumentation zeigt keine fingierten Team- oder Kontodatensätze und veröffentlicht keine persönlichen Kontaktdaten.