# Réglages, articles, fichiers et visiteurs du CMS de Total.js et où tout est stocké

> Les réglages du CMS de Total.js, le gestionnaire d’articles, la façon dont les fichiers envoyés sont servis et redimensionnés, les statistiques de visiteurs et le tableau de bord, l’intégration à OpenPlatform et le modèle de données du site.

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

## Réglages

Le plugin *Settings* (`settings_read`, `settings_save` ; permission `settings`) modifie la configuration que le CMS conserve dans les métadonnées du site et charge dans `CONF` à chaque démarrage :

| Clé | Signification |
|---|---|
| `name` | le nom du site, utilisé dans le `<title>` de toutes les pages sauf `/` et dans le nom du fichier de sauvegarde |
| `url` | l’adresse publique du site ; le CMS la met aussi à jour à partir de l’hôte des requêtes de l’admin |
| `smtp` | les réglages SMTP sous forme de texte JSON (`server`, `from`, `user`, `password`, `port`) ; `settings_test` les essaie |
| `icon` | une icône pour le site |
| `$tms`, `secret_tms` | publie les événements par TMS, et le secret de cette connexion |
| `op_reqtoken`, `op_restoken` | les jetons d’une application [OpenPlatform](/en/openplatform/how-an-app-connects/) ; quand les deux sont définis, la connexion à l’admin est remplacée par celle d’OpenPlatform |
| `totalapi` | une clé pour les services de l’API Total.js |

Les plugins peuvent ajouter d’autres clés, qui apparaissent dans le même formulaire. Les valeurs du fichier `config` (`$api`, `cdn`, `salt` et, si vous l’ajoutez, `token`) ne se modifient pas ici.

## Articles

Le plugin *Posts* est un petit gestionnaire d’articles, conservés dans leur propre fichier NoSQL dans le stockage. Un article a `name`, `category`, `picture`, `summary`, `body`, `reference`, `icon`, `color`, `hidden` et `date` ; l’admin les liste du plus récent au plus ancien (100 par page) et `posts_categories` renvoie les catégories utilisées. Les articles sont des données pour votre propre code : le moteur de rendu public du CMS (`controllers/default.js`) ne les affiche pas, c’est donc à un widget ou à une route de votre cru de les lire et de les dessiner.

## Fichiers

Le plugin *Files* stocke les envois dans le stockage de fichiers et les marque comme publics. `GET /download/<id>.<ext>` sert un fichier public (seulement les publics ; les autres répondent 404). Pour les images, `?s=<percent>` renvoie un JPEG plus petit (la valeur doit être comprise entre 10 et 80, avec une qualité de 80), et `?download=1` force le téléchargement. Les routes d’envoi et leurs limites sont décrites dans [l’API de l’admin](/en/cms/the-admin-api/).

## Visiteurs et tableau de bord

Le module `modules/visitors.js` compte les visites des pages publiques grâce au script `/visitors.js` que chaque page inclut : visiteurs uniques, pages vues, navigateurs, référents, trafic de recherche, social et direct, mobile et ordinateur, heures du jour et personnes en ligne (un visiteur reste en ligne 20 minutes sans activité). Le plugin *Dashboard* dessine ces chiffres à partir de `dashboard_stats`, `dashboard_online`, `dashboard_browsers`, `dashboard_referers` et `dashboard_pages`.

## OpenPlatform

Quand `op_reqtoken` et `op_restoken` sont définis, le CMS connecte les gens via [OpenPlatform](/en/openplatform/what-is-openplatform/) (module `modules/openplatform.js`) et chaque plugin ajoute sa permission à la liste qu’OpenPlatform montre quand vous attribuez des groupes : `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` et `admin`. Rappelez-vous la règle d’OpenPlatform : une application n’est visible que des groupes que vous lui attribuez.

## Le modèle de données

`MAIN.db` contient les métadonnées du site (`pages`, `layouts`, `widgets`, `redirects`, `vars`, `nav`, `config` et `storage`) et est enregistré sous la forme d’un seul document JSON appelé `meta` dans le stockage de fichiers. Le HTML de chaque page et de chaque layout est un fichier de ce stockage dont le nom est l’id de la page ou du layout. `FUNC.load()` lit les métadonnées au démarrage, compile les widgets (en exécutant leur fonction `install`) et reconstruit les caches ; `FUNC.save()` les réécrit. C’est pourquoi une sauvegarde du stockage est une sauvegarde du site.
