ergänzungen
All checks were successful
deploy to production / deploy (push) Successful in 33s

This commit is contained in:
2025-06-14 11:36:18 +00:00
parent cbdd8cef97
commit 4298826c2f
8 changed files with 230 additions and 30 deletions

View File

@@ -13,7 +13,7 @@ help: ## show this help
docker-up: ## bring docker compose stack up in background
$(DOCKER_COMPOSE) --profile tibi up -d
$(DOCKER_COMPOSE) --profile tibi --profile docpress up -d
docker-up-tibi-dev: ## bring docker compose stack up in background with tibi-dev
$(DOCKER_COMPOSE) --profile tibi-dev up -d

View File

@@ -10,7 +10,7 @@ xs:
height: 90
width: 90
resampling: lanczos
quality: 75
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
s:
@@ -18,7 +18,7 @@ s:
height: 300
width: 300
resampling: lanczos
quality: 75
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
m:
@@ -26,7 +26,7 @@ m:
height: 600
width: 600
resampling: lanczos
quality: 75
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
l:
@@ -34,7 +34,7 @@ l:
height: 1200
width: 1200
resampling: lanczos
quality: 75
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
xl:
@@ -42,7 +42,7 @@ xl:
height: 2000
width: 2000
resampling: lanczos
quality: 75
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
xxl:
@@ -50,6 +50,67 @@ xxl:
height: 4000
width: 4000
resampling: lanczos
quality: 75
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
xs-webp:
- fit: true
height: 90
width: 90
resampling: lanczos
quality: 90
skipLargerDimension: false
skipLargerFilesize: true
lossless: false
outputType: webp
s-webp:
- fit: true
height: 300
width: 300
resampling: lanczos
quality: 90
skipLargerDimension: false
skipLargerFilesize: true
lossless: false
outputType: webp
m-webp:
- fit: true
height: 600
width: 600
resampling: lanczos
quality: 90
skipLargerDimension: false
skipLargerFilesize: true
lossless: false
outputType: webp
l-webp:
- fit: true
height: 1200
width: 1200
resampling: lanczos
quality: 90
skipLargerDimension: false
skipLargerFilesize: true
lossless: false
outputType: webp
xl-webp:
- fit: true
height: 2000
width: 2000
resampling: lanczos
quality: 90
skipLargerDimension: false
skipLargerFilesize: true
lossless: false
outputType: webp
xxl-webp:
- fit: true
height: 4000
width: 4000
resampling: lanczos
quality: 90
skipLargerDimension: false
skipLargerFilesize: true
lossless: false
outputType: webp

View File

@@ -1,6 +1,6 @@
quickEdit: # Erlaubt das Bearbeiten von Einträgen in der Listenansicht, ohne dass eine neue Seite geöffnet wird
enabled: true
fields: # felder, die in dieser Ansicht bearbeitet werden können
- title
- alt
- file
enabled: true
fields: # felder, die in dieser Ansicht bearbeitet werden können
- title
- alt
- file

View File

@@ -216,7 +216,23 @@ Für type Object[] gibt es im Meta objekt das direction attribut, dies kann entw
## metaElements
Möchte man bestimmte Elemente über das Zahnrad greifbar machen (bei type: Object[]), so kann man dies über dieses Attribut tun. Es ist entweder über eine Liste, oder über tablist möglich.
!!!include(../api/collections/fields/info.yml)!!!
Das kann Beispielsweise so aussehen:
```yaml
metaElements:
tablist:
tabs:
- name: allgemein
label: Allgemein
subFields:
- xtest
- paymentValue
- name: allgemein2
label: Allgemein2
subFields:
- source: ytest2
```
## folding

View File

@@ -103,15 +103,25 @@ Dieses Widget erfordert die weitere Angabe von subFields, die außerhalb des met
Für Datentyp object[], dient als übersichtliche object[] alternative, speziell für pagebuilder entwickelt.
!!!include(../api/collections/fields/rows.yml)!!!
## jsonField
Wird für Daten genutzt, wo man die Struktur nicht absehen kann.
!!!include(../api/collections/fields/form.yml)!!!
## previewBasedObjectArray
Das ist eine Darstellung für object[], in der Verschachtelung durch überlagerung unterbunden wird. Dies ist Insbesondere für die Content Collection vorgesehen, und ist stark abhängig von der Zeilenvorschau via reingerenderten Svelte Komponenten.
## tabs
Dieses Widget hat im Prinzip die gleiche Funktion wie dasjenige in der Collection Meta-Konfiguration, ist jedoch etwas anders strukturiert. Ähnlich wie beim object Widget werden subFields verwendet, wobei das label von jedem subField der jeweilige Tab-Name ist. Würde man type auf number setzen, so hätte man in diesem Fall einfach einen Tab mit dem Namen "xyz" und ein number Feld im Tab mit dem gleichen Namen. Sinnvoller ist es natürlich, type auf object zu setzen, um mehrere Felder in einen Tab zu packen.
# useDefaultArray
Wenn ein belibiger Datentyp in einem Array gefordert ist, so kann man jedes beliebige Widget dafür nutzten, indem man useDefaultArray: true benutzt. Damit kann jedes widget in das defaultArray widget gepackt werden. Wird Object[] in kombination mit useDefaultArray verwendet, so wird die einfache Objektdarstellung in diese darstellung implementiert.
![useDefaultArray auf true](defaultArray.png)
!!!include(../api/collections/fields/emailCC.yml)!!!
## jsonField
Wird für Daten genutzt, wo man die Struktur nicht absehen kann.
!!!include(../api/collections/fields/form.yml)!!!
```yml
type: object
name: formular
@@ -122,10 +132,7 @@ meta:
widget: jsonField
```
# useDefaultArray
Wenn ein belibiger Datentyp in einem Array gefordert ist, so kann man jedes beliebige Widget dafür nutzten, indem man useDefaultArray: true benutzt. Damit kann jedes widget in das defaultArray widget gepackt werden. Wird Object[] in kombination mit useDefaultArray verwendet, so wird die einfache Objektdarstellung in diese darstellung implementiert.
![useDefaultArray auf true](defaultArray.png)
!!!include(../api/collections/fields/emailCC.yml)!!!

View File

@@ -29,3 +29,4 @@ Folgende Attribute können Filter-Eintrage haben, wobei `fit` und `fill` exklusi
| `quality` | number | Ausgabequalität 0..100 |
| `skipLargerDimension` | boolean | Bild wird nicht manipuliert, wenn es kleiner ist als das angegebene Rechteck |
| `skipLargerFilesize` | boolean | Bild wird nicht manipuliert, wenn das Zielbild eine größere Dateigröße hat als das Original |
| `outputType` | string | zur automatischen Umwandlung in bspw. WebP |

View File

@@ -1,10 +1,10 @@
# meta Objekt
Wie bereits an anderer Stelle beschrieben, dient das `meta` Objekt zur Definition von Merkmalen, die im _tibi-admin_ finden. Zum Anlegen der Struktur in der Datenbank und Definition der API haben diese Angaben keine Relevanz.
Wie bereits an anderer Stelle beschrieben, dient das `meta` Objekt zur Definition von Merkmalen, die Sie im _tibi-admin_ finden. Zum Anlegen der Struktur in der Datenbank und Definition der API haben diese Angaben keine Relevanz.
Folgende Angaben sind auf Collectionebene möglich:
Folgende Angaben sind möglich:
!!!include(../api/collections/democol/meta.yml)!!!
## views Liste
@@ -67,6 +67,118 @@ Der mutliupload kann bei jedem view type verwendet werden. Über $file kann man
!!!include(../api/collections/medialib.yml)!!!
## Singleton
Für Collections, welche nur einen Eintrag haben dürfen, gibt es das singleton Objekt. Dabei wird im Tibi Admin automatisch beim ersten Öffnen der Collection ein Eintrag erzeugt, und anschließend ebenfalls automatisch immer dieser Umgehend geöffnet, sodass die "Entry" Übersicht wegfällt.
```yaml
singleton:
enabled: true
```
## hideInNavigation
Für Collections, welche nicht in der Seitennavigation auffindbar sein sollen, kann man dieses Attribut verwenden.
```yaml
hideInNavigation: true
```
## allowExportAll
Wenn dieses Attribut auf true gesetzt wird, so kann der Nutzer alle Einträge auf einmal Herunterladen, in einem Format, welches er in einem anderen Server wieder hochladen kann.
```yaml
allowExportAll: true
```
## multilingual
Dieses Attribut ist für die Content Collection vorgesehen. Dabei hat man eine Möglichkeit, zwischen den Verfügbaren Sprachen für diesen Eintrag hin und her zu wechseln, sowie Fehlende Sprachen anzulegen. Dabei Referenzieren sich die unterschiedlichen Sprachversionen gegenseitig. Über das Select oben Rechts im Admin kann zwischen den Sprachen gewechselt werden. Über den Button in der Fußzeile könnte man manuell eine Sprache verknüpfen, was aber bei regulärer Nutzung nicht notwendig sein sollte.
```yaml
multilingual:
enabled: true
defaultLang: de
pathToLanguageSelect: generalDetails.lang
pathToLanguageReferences: generalDetails.languageReferences
```
```yaml
- name: languageReferences
type: string[]
meta:
label:
de: Sprachreferenzen
en: Language References
widget: foreignKey
hide: true
foreign:
collection: content
subNavigation: 0
id: id
render:
defaultCollectionViews: true
```
```yaml
name: lang
type: string
meta:
label:
de: Sprache
en: Language
widget: select
choices:
- name:
de: Deutsch
en: German
id: de
- name:
de: Englisch
en: English
id: en
- name:
de: Französisch
en: French
id: fr
- name:
de: Schwedisch
en: Swedish
id: se
- name:
de: Dänisch
en: Danish
id: dk
```
## Information Guide
Um ein Projekt direkt im TibiAdmin zu dokumentieren, kann man den information Guide verwenden. Dazu wird ein .md dokument in ein Modal hineingerendert:
```yaml
informationGuide:
title:
de: Links Guide
en: Links Guide
content:
path:
eval: $projectBase + "_/assets/information/static_frontend_links.md"
```
## noDB
Wenn eine Collection nur einen get Hook hat, welcher bspw xml (wie die Sitemap collection) zurückgibt, so kann man noDB aktivieren. Dabei werden dann keine Einträge gerendert, sondern dass, was von der Collection zurückgegeben wird:
```yaml
noDB:
enabled: true
xmlPreview: true
```
## backups
im meta Objekt einer collection können backups für diese collection konfiguriert werden. Die backups werden in der Datenbank gespeichert und können über das tibi-admin in der selben collection angewandt werden. Wird ein collectoneintrag gelöscht, kann man diesen über den gelöschte einträge checkbox wiederherstellen.

View File

@@ -88,8 +88,6 @@ Diese Konfigurationsdatei ist für einen Apache Webserver bestimmt und beinhalte
- Clientseitige Fetch-Request-Optimierung
- Überprüfung, ob die aktuelle Anfrage bereits im window.**SSR_CACHE** vorhanden ist.
- Bei vorhandenen Anfragen wird der gespeicherte Wert über Promise.resolve() zurückgegeben, um redundante Anfragen zu vermeiden.
- Deaktivierung von SSR-Caching für spezielle Seiten
- Für Seiten wie Produktseiten wird empfohlen, das SSR-Caching über den Boolean zu deaktivieren, um zu verhindern, dass solche Anfragen in den Cache gelangen.
- Finalisierung des HTML-Dokuments
- Das Standard-spa.html-Dokument wird verwendet und mit den ermittelten Werten für Head, Body, Fehlermeldungen und Kommentaren ergänzt.
- Das resultierende HTML-Dokument wird in der SSR-Collection gespeichert und als Response an den Client gesendet.
@@ -98,10 +96,15 @@ Diese Konfigurationsdatei ist für einen Apache Webserver bestimmt und beinhalte
## Teil 3: SSR-Cache-Management
- Cache-Management in der Content-Collection
- Löschung der SSR-Collection bei jedem POST und PUT-Request.
- Workflow-Integration
- Als Teil des Workflows wird der SSR-Cache gelöscht, um die Auslieferung veralteter Seiten zu verhindern.
Ein effektives Cache-Management ist essenziell, da häufiges Löschen des SSR-Caches die SEO-Performance negativ beeinflussen kann. Webcrawler verfügen über ein begrenztes Crawl-Budget ist dieses aufgebraucht, werden keine weiteren Seiten indexiert. Daher sollte der Cache automatisiert und intelligent gepflegt werden.
Eine bewährte Methode zur automatischen Cache-Befüllung ist die Nutzung der Sitemap. Diese sollte jedoch mit Bedacht eingesetzt werden, da sie insbesondere bei großen Projekten mit hohem Rechenaufwand verbunden sein kann.
Zur Effizienzsteigerung wird bei jedem SSR-Eintrag protokolliert, welche Datenquellen (z.B. Einträge) für den Seitenaufbau verwendet wurden. Wird ein solcher Eintrag später verändert, werden automatisch alle davon abhängigen SSR-Caches invalidiert und die betreffenden URLs in eine „Recalculation Queue“ eingetragen, um eine zeitnahe Neubefüllung sicherzustellen.
Zusätzlich existiert eine SSR-Flags-Collection, mit der gesteuert werden kann, ob alle SSR-Einträge über Nacht neu generiert werden sollen. Dabei wird der SSR-Cache unmittelbar geleert, der Wiederaufbau erfolgt jedoch aus Performancegründen zeitversetzt in den Nachtstunden. Diese Flag wird bspw automatisiert in der Pipeline gesetzt.
### Dokumentation: SSR in der Entwicklungsumgebung