Страница в портале — это не запись в базе, а папка с файлами. Внутри лежит описание страницы и её тексты. Такой формат выбран специально: файлы можно хранить в истории версий, легко читать и переносить, и они не зависят от конкретного сервера.
Страница — это папка
У каждой страницы своя папка. Внутри — три вида содержимого:
- Файл описания — здесь записано всё о странице: заголовок, описание, иконка, из каких блоков она состоит, какой у неё доступ и настройки.
- Текстовые файлы — крупные тексты блоков вынесены из описания в отдельные файлы. Так описание остаётся коротким и обозримым, а правки в истории версий — понятными.
- Папка картинок — изображения страницы лежат рядом, в отдельной папке.
Выглядит это примерно так:
portal/ корень портала
├── document.json описание главной страницы
├── {блок}.md тексты блоков главной
├── assets/ картинки главной
└── news/
├── document.json
└── {блок}_intro.md
Зачем именно так
Хранение контентом обычными файлами даёт три выгоды. Первая — чистая история версий: каждое сохранение переписывает описание целиком, поэтому в истории видно именно то, что изменилось, а не сотни строк случайных перестановок. Вторая — переносимость: папку портала можно скопировать на другой сервер и открыть там без экспорта и импорта. Третья — независимость: если завтра вы решите перейти на другой сервер или другой бренд, контент останется с вами.
Что лежит в описании страницы
- Заголовок — название страницы, оно же показывается в дереве. Обязательное поле.
- Описание и иконка — короткая пояснительная строка под заголовком и значок страницы в дереве.
- Блоки — из чего собрана страница, по порядку. Может быть пустым списком, если страница пока только задумана.
- Переменные — объявленные переменные для страниц-образцов (см. Шаблоны и переменные).
- Доступ — кто может открыть страницу: только администраторы, сотрудники после входа или все желающие (см. Доступ к страницам).
- Настройки — ширина страницы, участие в меню, рекомендация от агента и настройки самого сайта: его название, значок и глубина меню.
Что сервер ведёт сам
Время создания, время последнего изменения и номер версии страницы сервер проставляет сам при каждом сохранении. Править их вручную не нужно и не стоит — при следующем сохранении они всё равно обновятся.
Адреса страниц
Адрес страницы — это путь по папкам от корня портала. Имена пишутся латиницей в нижнем регистре через дефис, например press-releases. Отдельный случай — папка с именем в квадратных скобках, например [tag]: это образец, который обслуживает сразу много адресов. Подробнее — в разделе Шаблоны и переменные.
Подстановка значений
Когда страница читается, сервер подставляет значения переменных во все её строки: в заголовок страницы, описание, заголовки блоков, подписи кнопок и адреса ссылок. Тексты блоков подставляются уже в браузере — так образец мгновенно показывает нужный вариант при переходе по адресу.
Чего в контенте нет
Часть данных лежит рядом с порталом, но в сам контент не попадает. Окружение Python (набор программ, которыми считаются скрипты), рабочая папка для файлов скриптов и пометки о непрочитанных страницах — всё это служебные данные сервера. Они не входят в историю версий и при копировании портала на другой сервер переносятся отдельно или создаются заново.
Дальше: как из блоков собирается страница — в разделе Блоки; как вести много адресов одной страницей — в разделе Шаблоны и переменные; чем управляет агент — в разделе Управление агентом.