Maksoft CMS Runtime Output Contract (v2)
Root Structure
Runtime обектът съдържа основните контексти за рендериране.
-
site – Глобален контекст на сайта
-
page – Текущо рендерираната страница
-
user – Контекст на потребителя
-
search – Състояние на търсене (ако е активно)
page
Представлява текущата страница, подадена към темата.
Основни свойства
-
id – Уникален идентификатор на страницата
-
type – Тип на страницата (
page | stream_item) -
status – Статус на публикуване
-
slug – URL сегмент
-
url – Пълен URL адрес
-
parent_id – Родител в йерархията
-
order – Позиция в списък
content
Основното текстово съдържание на страницата.
-
title – Заглавие на страницата
-
name – Име за меню
-
text – Чист текст (без HTML)
-
html – Рендерирано HTML съдържание
-
excerpt – Кратък откъс
-
description – Meta описание / intro текст
meta
SEO и metadata информация.
-
title – SEO заглавие
-
description – SEO описание
-
keywords – Ключови думи
-
canonical – Каноничен URL
-
robots – Robots директива
media
Медиен слой на страницата.
Media обектите предоставят унифициран достъп до изображения, галерии и видео.
Основно изображение
съдържа:
-
id – Идентификатор на изображението
-
kind – Тип медия (
image) -
src – Път към оригиналното изображение
-
alt – Алтернативен текст
-
origin – Произход на изображението (
local | external)
Responsive Image Data
CMS може да добави:
-
srcset
-
sizes
-
html
за директно рендериране на responsive изображения.
streams
Streams описват набори от страници или съдържание, свързани със страницата.
Използват се за:
-
подстраници
-
групи страници
-
feed елементи
-
резултати от търсене
свойства
-
kind – Тип поток (
relation | group | feed | search) -
binding – Степен на свързаност (
strong | weak | virtual) -
role – Семантична роля (
subpages,group_pages,feed_itemsи др.) -
items – Елементи за визуализация
display
Контролира предпочитанията за визуализация, подадени от CMS.
Theme може да ги използва като насоки.
-
enabled – Активирано ли е визуализирането
-
layout – Предпочитан layout (
auto | grid | list | slider) -
columns – Брой колони
-
elements – Кои елементи да се показват
-
links – Как се прилагат линковете
-
limit – Ограничение на елементи
-
order – Подредба
blocks
Blocks представляват визуални компоненти, които изграждат страницата.
Всеки block е инстанция на компонент от темата.
структура
Block обект:
-
component – Име на компонента
-
data – Данни, подавани към компонента
пример
component: "text",
data: {
html: "
...
"}
}
или
{
component: "subpages",
data: {
items: [...],
columns: 3
}
}
Blocks се рендерират от theme чрез component templates.
user
Контекст на текущия потребител.
-
logged_in – Вписан ли е потребителят
-
access_level – Глобално ниво на достъп
-
site_access – Достъп до сайта
-
page_access – Достъп до страницата
-
capabilities – Разрешения
-
csrf – CSRF токен
Основни принципи
-
Backend изчислява логиката
-
Theme само рендерира
-
displayпринадлежи наpage -
streamsне дефинират визуална логика -
blocksописват структурата на страницата -
Не се връщат сурови DB структури
-
Engine-specific данни са в
extensions
Архитектурен модел
Maksoft CMS runtime структура:
user
page
├─ content
├─ meta
├─ media
├─ streams
├─ display
└─ blocks
search
кратка "Maksoft CMS Theme Developer Guide (1 страница)", която описва как theme разработчик да използва:
-
$page['blocks'] -
$page['media'] -
$page['streams']
без да чете цялата документация. Това обикновено спестява много време на разработчиците.