# Einstellungen, Beiträge, Dateien und Besucher des Total.js CMS und wo alles gespeichert wird

> Die Einstellungen des Total.js CMS, die Beitragsverwaltung, wie hochgeladene Dateien ausgeliefert und skaliert werden, die Besucherstatistik und das Dashboard, die Integration mit OpenPlatform und das Datenmodell der Website.

Framework: cms
Product: CMS (cms@8071e48)
Language: de
Content-SHA256: 894cbfba0e2df7b234c4b865a2a7290da194d321f4ab00d663e0a4c138a59d96
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Einstellungen

Das Plugin *Settings* (`settings_read`, `settings_save`; Berechtigung `settings`) bearbeitet die Konfiguration, die das CMS in den Metadaten der Website hält und bei jedem Start in `CONF` lädt:

| Schlüssel | Bedeutung |
|---|---|
| `name` | der Name der Website, verwendet im `<title>` jeder Seite außer `/` und im Dateinamen des Backups |
| `url` | die öffentliche Adresse der Website; das CMS aktualisiert sie auch aus dem Host der Admin-Anfragen |
| `smtp` | die SMTP-Einstellungen als JSON-Text (`server`, `from`, `user`, `password`, `port`); `settings_test` prüft sie |
| `icon` | ein Symbol für die Website |
| `$tms`, `secret_tms` | veröffentlicht die Ereignisse per TMS, und das Geheimnis dieser Verbindung |
| `op_reqtoken`, `op_restoken` | die Tokens einer [OpenPlatform](/en/openplatform/how-an-app-connects/)-Anwendung; sind beide gesetzt, ersetzt die Anmeldung über OpenPlatform die Admin-Anmeldung |
| `totalapi` | ein Schlüssel für die Total.js-API-Dienste |

Plugins können weitere Schlüssel hinzufügen, die im selben Formular erscheinen. Werte aus der Datei `config` (`$api`, `cdn`, `salt` und, wenn Sie ihn hinzufügen, `token`) werden hier nicht bearbeitet.

## Beiträge

Das Plugin *Posts* ist eine kleine Artikelverwaltung, die in einer eigenen NoSQL-Datei im Speicher liegt. Ein Beitrag hat `name`, `category`, `picture`, `summary`, `body`, `reference`, `icon`, `color`, `hidden` und `date`; der Admin listet sie neueste zuerst (100 pro Seite), und `posts_categories` liefert die verwendeten Kategorien. Die Beiträge sind Daten für Ihren eigenen Code: Der öffentliche Renderer des CMS (`controllers/default.js`) gibt sie nicht aus, ein Widget oder eine Route von Ihnen muss sie also lesen und darstellen.

## Dateien

Das Plugin *Files* speichert Uploads im Dateispeicher und markiert sie als öffentlich. `GET /download/<id>.<ext>` liefert eine öffentliche Datei aus (nur öffentliche; die übrigen antworten mit 404). Bei Bildern liefert `?s=<percent>` ein kleineres JPEG (der Wert muss zwischen 10 und 80 liegen, mit Qualität 80), und `?download=1` erzwingt einen Download. Die Upload-Routen und ihre Grenzen stehen in [die Admin-API](/en/cms/the-admin-api/).

## Besucher und das Dashboard

Das Modul `modules/visitors.js` zählt die Besuche der öffentlichen Seiten über das Skript `/visitors.js`, das jede Seite einbindet: eindeutige Besucher, Seitenaufrufe, Browser, Verweise, Suche, soziale Netzwerke und direkter Zugriff, Mobil und Desktop, Tagesstunden und die Personen online (ein Besucher gilt 20 Minuten ohne Aktivität als online). Das Plugin *Dashboard* zeichnet diese Zahlen aus `dashboard_stats`, `dashboard_online`, `dashboard_browsers`, `dashboard_referers` und `dashboard_pages`.

## OpenPlatform

Sind `op_reqtoken` und `op_restoken` gesetzt, meldet das CMS Personen über [OpenPlatform](/en/openplatform/what-is-openplatform/) an (Modul `modules/openplatform.js`), und jedes Plugin steuert seine Berechtigung zur Liste bei, die OpenPlatform beim Zuweisen von Gruppen zeigt: `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` und `admin`. Denken Sie an die Regel von OpenPlatform: Eine Anwendung ist nur für die Gruppen sichtbar, die Sie ihr zuweisen.

## Das Datenmodell

`MAIN.db` hält die Metadaten der Website (`pages`, `layouts`, `widgets`, `redirects`, `vars`, `nav`, `config` und `storage`) und wird als ein JSON-Dokument namens `meta` im Dateispeicher gesichert. Das HTML jeder Seite und jedes Layouts ist eine Datei dieses Speichers, deren Name die ID der Seite oder des Layouts ist. `FUNC.load()` liest die Metadaten beim Start, kompiliert die Widgets (und führt ihre Funktion `install` aus) und baut die Caches neu auf; `FUNC.save()` schreibt sie zurück. Deshalb ist ein Backup des Speichers ein Backup der Website.
