# Настройки, публикации, файлове и посетители на CMS на Total.js и къде се съхранява всичко

> Настройките на CMS на Total.js, мениджърът на публикации, как се сервират и преоразмеряват качените файлове, статистиката на посетителите и таблото, интеграцията с OpenPlatform и моделът на данните на сайта.

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

## Настройки

Добавката *Settings* (`settings_read`, `settings_save`; право `settings`) редактира конфигурацията, която CMS пази в метаданните на сайта и зарежда в `CONF` при всяко стартиране:

| Ключ | Значение |
|---|---|
| `name` | името на сайта, използва се в `<title>` на всяка страница освен `/` и в името на файла на архива |
| `url` | публичният адрес на сайта; CMS го обновява и от хоста на заявките към администрацията |
| `smtp` | настройките за SMTP като текст JSON (`server`, `from`, `user`, `password`, `port`); `settings_test` ги изпробва |
| `icon` | икона за сайта |
| `$tms`, `secret_tms` | публикува събитията чрез TMS и тайната на тази връзка |
| `op_reqtoken`, `op_restoken` | токените на приложение [OpenPlatform](/en/openplatform/how-an-app-connects/); когато са зададени и двата, влизането в администрацията се заменя с това на OpenPlatform |
| `totalapi` | ключ за услугите на Total.js API |

Добавките могат да добавят още ключове, които се появяват в същата форма. Стойностите, които живеят във файла `config` (`$api`, `cdn`, `salt` и, ако го добавите, `token`), не се редактират тук.

## Публикации

Добавката *Posts* е малък мениджър на статии, пазени в собствен NoSQL файл във хранилището. Публикацията има `name`, `category`, `picture`, `summary`, `body`, `reference`, `icon`, `color`, `hidden` и `date`; администрацията ги изброява от най-новите (по 100 на страница), а `posts_categories` връща използваните категории. Публикациите са данни за вашия собствен код: публичният рендер на CMS (`controllers/default.js`) не ги изписва, затова ваш уиджет или маршрут трябва да ги прочете и нарисува.

## Файлове

Добавката *Files* пази качванията във файловото хранилище и ги маркира като публични. `GET /download/<id>.<ext>` сервира публичен файл (само публичните; останалите отговарят 404). За изображения `?s=<percent>` връща по-малък JPEG (стойността трябва да е между 10 и 80, с качество 80), а `?download=1` налага сваляне. Маршрутите за качване и техните ограничения са в [API на администрацията](/en/cms/the-admin-api/).

## Посетители и таблото

Модулът `modules/visitors.js` брои посещенията на публичните страници чрез скрипта `/visitors.js`, който включва всяка страница: уникални посетители, прегледи, браузъри, препращащи сайтове, трафик от търсене, социални мрежи и директен, мобилни и настолни, часове от денонощието и хората онлайн (посетителят е онлайн 20 минути без активност). Добавката *Dashboard* рисува тези числа от `dashboard_stats`, `dashboard_online`, `dashboard_browsers`, `dashboard_referers` и `dashboard_pages`.

## OpenPlatform

Когато `op_reqtoken` и `op_restoken` са зададени, CMS вписва хората чрез [OpenPlatform](/en/openplatform/what-is-openplatform/) (модул `modules/openplatform.js`) и всяка добавка допълва своето право към списъка, който OpenPlatform показва при възлагането на групи: `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` и `admin`. Запомнете правилото на OpenPlatform: едно приложение се вижда само от групите, на които го възложите.

## Моделът на данните

`MAIN.db` държи метаданните на сайта (`pages`, `layouts`, `widgets`, `redirects`, `vars`, `nav`, `config` и `storage`) и се записва като един JSON документ с име `meta` във файловото хранилище. HTML на всяка страница и layout е файл от това хранилище, чието име е идентификаторът на страницата или layout-а. `FUNC.load()` чете метаданните при стартиране, компилира уиджетите (изпълнявайки функцията им `install`) и възстановява кешовете; `FUNC.save()` ги записва обратно. Затова архивът на хранилището е архив на сайта.
