Skip to main content
Skip table of contents

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:

YAML
[...]
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:

YAML
# 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:

YAML
# 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:

YAML
# 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:

YAML
# 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:

YAML
# 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:

YAML
# 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:

YAML
# 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

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.