Page Templates
Das Template
Im be Portal können Templates verwendet werden. Dies ist dann sinnvoll, wenn gleiche Aufgaben mit wenig Konfigurationsaufwand erledigt werden sollen. Dies kann z.B. eine Seite mit einer Tabelle und einer zugehörigen Editierfunktion sein, die jeweils eine andere Entität editierbar machen soll. Mit einem Template spart man sich den Aufwand, die Tabelle und die zugehörige Bearbeitungsmaske zu erstellen.
Template-Datei erstellen
Damit ein Template genutzt werden kann, ist es wichtig, dass dieses immer im Verzeichnis .pages/.templates
eines Packages liegt. Eine Template-Datei muss immer im Format <TEMPLATE_NAME>.page.yml
benannt werden.
Platzhalter
Ein Template sollte für Eigenschaften, die dynamisch sein sollen entsprechende Platzhalter beinhalten. Platzhalter müssen im Format __PLATZHALTER_NAME__
vorliegen. Es muss also gegeben sein, dass ein Platzhalter von __
umschlossen ist, damit diese bei der Verarbeitung korrekt ersetzt werden können.
Platzhalter für die PageId
Damit ein Template als Page funktionieren kann, muss als id
der Page der Platzhalter __PAGE_ID__
eingesetzt werden. Dieser ist nicht dynamisch und darf bei der Nutzung nicht übergeben werden.
Beispiel:
[...]
objectType: pageContainer
# Platzhalter für den Seitentitel. Muss vorhanden sein!
id: __PAGE_ID__
type: mainPage
[...]
Platzhalter für Strings
Platzhalter können für beliebige Texte verwendet werden.
Beispiel:
# Template
[...]
type: mainPage
# Platzhalter für den Seitentitel
title: __PAGE_TITLE__
[...]
# Template Page
[...]
type: templatePage
template:
id: BEPO.singleEntity
placeholder:
- key: PAGE_TITLE
value: Hallo Welt!
[...]
Platzhalter für Arrays
Platzhalter können für beliebige Arrays verwendet werden.
Beispiel:
# Template
[...]
type: mainPage
controls:
- controlType: inputContainer
controls:
- controlType: input
type: dropdown
value: EUR
# Platzhalter für Items in einem Dropdown
selectOptions: __CURRENCIES__
[...]
# Template Page
[...]
type: templatePage
template:
id: BEPO.singleEntity
placeholder:
- key: CURRENCIES
value:
- value: eur
label: Euro (€)
- value: usd
label: Dollar ($)
- value: gbp
label: Pounds (£)
[...]
Platzhalter für Objekte
Platzhalter können für beliebige Objekte verwendet werden.
Beispiel:
# Template
[...]
type: mainPage
data:
variables:
# Platzhalter für Attribute eines entitySets
mainEntitySet: __MAIN_ENTITY_SET__
[...]
# Template Page
[...]
type: templatePage
template:
id: BEPO.singleEntity
placeholder:
# Platzhalter für ein Objekt
- key: MAIN_ENTITY_SET
value:
type: entitySet
source: odata
entity: DEMO_Testtabelle
attributes: '*'
[...]
Standardwerte
Damit nicht alle Platzhalter bei der Verwendung eines Templates übergeben werden müssen, können im Template Standardwerte definiert werden. Das ist hilfreich, wenn bei mehrfacher Nutzung eines Templates gleichbleibende Werte nicht immer neu gesetzt werden müssen. Sollte für einen Platzhalter sowohl im Template als auch in der Template-Page ein Wert definiert werden, hat der Wert der Template-Page Vorrang. Ist weder im Template noch in der Template-Page ein Wert definiert wird eine Fehlermeldung im Format Placeholder <PLATZHALTER_NAME> nicht gesetzt
als Toast im Frontend ausgegeben.
Beispiel:
# Template
[...]
type: mainPage
# Standardwerte die für das Template gelten sollen
placeholderDefault:
- key: MASTER_ATTRIBUTE_NAME
value: "*"
- key: INITIAL_FILTER
value: "false"
[...]
Platzhalter ohne Bezug
Platzhalter müssen immer zu einem Oberpunkt gehören. Alleinstehende Platzhalter sind nicht definierbar.
Beispiel:
# NICHT MÖGLICH
[...]
type: mainPage
flow: horizontal
__PLACEHOLDER_CONTROLS__
# MÖGLICH
[...]
type: mainPage
flow: horizontal
controls: __PLACEHOLDER_CONTROLS__
Nutzung eines Templates in einer Template-Page
Template-Pages können innerhalb jedes Packages benutzt werden. Dazu muss im .pages
-Ordner des Templates eine Page angelegt werden.
Damit Template-Pages funktionieren muss für die erstellte Page type: templatePage
gesetzt werden. Ebenfalls muss mindestens ein Platzhalter definiert sein. Dazu muss ein Array mit dem Namen placeholder
in der Template-Page definiert werden.
Ein Template auswählen
Damit sichergestellt ist, welches Template zur Anwendung kommt, muss dieses in der Template-Page angegeben werden. Dabei ist zu beachten, dass dieses immer inklusive Package-Key angegeben werden muss. Es kann sowohl ein Template innerhalb des derzeitigen, aber auch aus anderen Packages genutzt werden. Um ein Template auszuwählen muss innerhalb des Objekts template
eine Eigenschaft id
definiert werden. Das Template muss immer im Format <PACKAGEKEY>.<TEMPLATE_NAME>
angegeben werden.
Beispiel:
# Template Page
[...]
type: templatePage
template:
# Template im Format <PACKAGEKEY>.<TEMPLATE_NAME>
# Hier wird das Template singleEntity aus dem Package be-portal benutzt.
# Dieses wäre zu finden unter be-portal/.pages/.templates/singleEntity.page.yml
id: BEPO.singleEntity
placeholder:
[...]
[...]
Platzhalter definieren
Platzhalter müssen innerhalb einer Template-Page als Array unter dem Objekt template
definiert werden und die Bezeichnung placeholder
besitzen. Jeder Platzhalter muss einen Wert für key
als auch für value
definiert haben. Über den Wert für key
findet die Zuordnung für den entsprechenden Platzhalter statt. Sind in einem Template mehrere Vorkommen eines Platzhalters vorhanden werden alle Vorkommen durch den angegebenen Wert ersetzt.
Beispiel:
# Template Page
[...]
type: templatePage
template:
id: BEPO.singleEntity
placeholder:
# Platzhalter für einen String
- key: ENTITY_NAME
value: DEMO_Templatenotes
# Platzhalter für ein Array
- key: CURRENCIES_ARRAY
value:
- value: eur
label: Euro (€)
- value: usd
label: Dollar ($)
- value: gbp
label: Pounds (£)
# Platzhalter für ein Objekt
- key: BACKGROUND_IMAGE_PROPS
value:
url: https://imgv2-2-f.scribdassets.com/img/document/236965982/298x396/8b8b38e198/1715119238?v=1
repeat: no-repeat
size: contain
position: center