# Instellingen, berichten, bestanden en bezoekers van het Total.js CMS en waar alles wordt opgeslagen

> De instellingen van het Total.js CMS, de berichtenbeheerder, hoe geüploade bestanden worden geserveerd en verkleind, de bezoekersstatistieken en het dashboard, de integratie met OpenPlatform en het datamodel van de site.

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

## Instellingen

De plugin *Settings* (`settings_read`, `settings_save`; recht `settings`) bewerkt de configuratie die het CMS in de metadata van de site bewaart en bij elke start in `CONF` laadt:

| Sleutel | Betekenis |
|---|---|
| `name` | de naam van de site, gebruikt in de `<title>` van elke pagina behalve `/` en in de bestandsnaam van de back-up |
| `url` | het openbare adres van de site; het CMS werkt het ook bij vanuit de host van de beheerverzoeken |
| `smtp` | de SMTP-instellingen als JSON-tekst (`server`, `from`, `user`, `password`, `port`); `settings_test` probeert ze |
| `icon` | een pictogram voor de site |
| `$tms`, `secret_tms` | publiceert de gebeurtenissen via TMS, en het geheim van die verbinding |
| `op_reqtoken`, `op_restoken` | de tokens van een [OpenPlatform](/en/openplatform/how-an-app-connects/)-applicatie; als beide zijn ingesteld, wordt de beheerlogin vervangen door die van OpenPlatform |
| `totalapi` | een sleutel voor de Total.js API-diensten |

Plugins kunnen meer sleutels toevoegen, die in hetzelfde formulier verschijnen. Waarden die in het bestand `config` staan (`$api`, `cdn`, `salt` en, als je hem toevoegt, `token`) worden hier niet bewerkt.

## Berichten

De plugin *Posts* is een kleine beheerder van artikelen, bewaard in een eigen NoSQL-bestand in de opslag. Een bericht heeft `name`, `category`, `picture`, `summary`, `body`, `reference`, `icon`, `color`, `hidden` en `date`; het beheer toont ze nieuwste eerst (100 per pagina) en `posts_categories` geeft de gebruikte categorieën terug. De berichten zijn gegevens voor je eigen code: de openbare renderer van het CMS (`controllers/default.js`) drukt ze niet af, dus een widget of route van jou moet ze lezen en tekenen.

## Bestanden

De plugin *Files* bewaart uploads in de bestandsopslag en markeert ze als openbaar. `GET /download/<id>.<ext>` serveert een openbaar bestand (alleen de openbare; de rest antwoordt 404). Bij afbeeldingen geeft `?s=<percent>` een kleinere JPEG (de waarde moet tussen 10 en 80 liggen, met kwaliteit 80), en `?download=1` dwingt een download af. De uploadroutes en hun limieten staan in [de beheer-API](/en/cms/the-admin-api/).

## Bezoekers en het dashboard

De module `modules/visitors.js` telt de bezoeken aan de openbare pagina’s via het script `/visitors.js` dat elke pagina insluit: unieke bezoekers, paginaweergaven, browsers, verwijzers, zoek-, sociaal en direct verkeer, mobiel en desktop, uren van de dag en de mensen online (een bezoeker is 20 minuten online zonder activiteit). De plugin *Dashboard* tekent die cijfers uit `dashboard_stats`, `dashboard_online`, `dashboard_browsers`, `dashboard_referers` en `dashboard_pages`.

## OpenPlatform

Als `op_reqtoken` en `op_restoken` zijn ingesteld, laat het CMS mensen inloggen via [OpenPlatform](/en/openplatform/what-is-openplatform/) (module `modules/openplatform.js`) en voegt elke plugin zijn recht toe aan de lijst die OpenPlatform toont bij het toewijzen van groepen: `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` en `admin`. Onthoud de regel van OpenPlatform: een applicatie is alleen zichtbaar voor de groepen die je eraan toewijst.

## Het datamodel

`MAIN.db` bevat de metadata van de site (`pages`, `layouts`, `widgets`, `redirects`, `vars`, `nav`, `config` en `storage`) en wordt als één JSON-document met de naam `meta` in de bestandsopslag bewaard. De HTML van elke pagina en layout is een bestand van die opslag waarvan de naam de id van de pagina of layout is. `FUNC.load()` leest de metadata bij de start, compileert de widgets (en voert hun functie `install` uit) en bouwt de caches opnieuw op; `FUNC.save()` schrijft ze terug. Daarom is een back-up van de opslag een back-up van de site.
