Maksoft.net

PAGE Structure (v2)


PAGE (данни за страница)

  • id – вътрешно уникално ID
  • n – номер на страница (Maksoft CMS)
  • type – тип съдържание page | post | product | offer | testimonial | faq | system | stream_item
  • status – статус на публикуване
  • name – кратко име (меню)
  • title – SEO заглавие
  • url – пълен адрес
  • parent_id – родителска страница (0 = корен)
  • order – ред на подредба
  • page_type – семантичен тип страница
  • view_mode – режим на визуализация

content (съдържание)

  • text – plain текст
  • html – пълно HTML съдържание, както е въведено/рендерирано
  • sections – извлечени семантични секции от html
  • excerpt – кратък откъс
  • description – описание (за meta/preview)

content.sections

sections е асоциативен масив със стандартни и разширяеми semantic slots. Секциите се извличат от HTML блокове с класове:

<section class="section section-hero">...</section>
<section class="section section-solution">...</section>
<section class="section section-faq">...</section>

Примерна структура:

$page['content']['sections'] = [
    'hero'        => '',
    'main'        => '',
    'intro'       => '',
    'problem'     => '',
    'solution'    => '',
    'benefits'    => '',
    'features'    => '',
    'proof'       => '',
    'offer'       => '',
    'action'      => '',
    'faq'         => '',

    'summary'     => '',
    'content'     => '',
    'related'     => '',

    'gallery'     => '',
    'specs'       => '',
    'price'       => '',
    'delivery'    => '',

    'testimonial' => '',
    'reviews'     => '',
    'logos'       => '',

    'notice'      => '',
    'error'       => '',
    'success'     => ''
];
  • main съдържа HTML-а, който остава след извличането на section-* блоковете.
  • Повтарящи се секции от един тип се обединяват в същия slot в реда на срещане.
  • Нови секции са позволени без промяна в структурата.
  • content.html остава наличен непроменен за обратна съвместимост.

Пример за ползване в тема:

<?= $page['content']['sections']['hero'] ?>
<?= $page['content']['sections']['main'] ?>
<?= $page['content']['sections']['solution'] ?>
<?= $page['content']['sections']['action'] ?>

meta (SEO данни)

  • title – SEO title
  • description – SEO description
  • keywords – масив ключови думи
  • tags – суров текст с тагове

media (медия ресурси)

main_image (основна снимка)

  • id – ID на медия
  • kind – тип медия (image/video/other)
  • src – URL / път
  • alt – alt текст

origin (произход медия)

  • typelocal | external | proxy
  • provider – име на източник
  • original_url – оригинален URL

prices (списък с цени)

Масив с ценови обекти.


breadcrumbs (навигационна пътека)

Масив от:

  • id
  • name
  • url

streams (потоци съдържание)

Масив от Stream обекти.

Потоците се рендерират последователно от темата.


Stream

  • id – идентификатор на потока
  • kindrelation | group | feed | search | custom
  • bindingstrong | weak | virtual
  • role – семантична роля subpages | group_pages | feed_items | search_results | related | custom

Stream: children (директни подстраници)

  • kind = relation
  • binding = strong

items → Card[]


Stream: group_pages (страници от асоциирана група)

  • kind = group
  • binding = weak

group (данни за група)

  • id – ID група
  • title – име група

items → Card[]


Stream: feeds (външни потоци)

Масив от StreamFeed.


StreamFeed

  • id – ID feed
  • kind – feed
  • binding – virtual
  • sourcedb | http | api
  • type – тип достъп (rss/json/api/custom)
  • url – адрес на API / източник

cache (правила за кеширане)

  • ttl_sec – време на живот
  • stale_while_revalidate_sec – подновяване

index (правила за индексиране)

  • enabled – включено/изключено
  • key – ключ за индекс

items → Card[]


raw (debug данни)

  • kept – пази ли се raw
  • hash – версия / хеш

Card (унифициран елемент)

Всички items в streams използват единен модел Card.

  • id – уникален ключ
  • n – номер в Maksoft (ако има)
  • type – тип карта page | article | product | place | custom
  • title – заглавие
  • url – линк
  • summary – кратко резюме

media (за карта)

main_image → Media


origin (произход на картата)

  • stream – от кой поток идва
  • sourcedb | http
  • bindingstrong | weak | virtual
  • group_id – ID група (ако е group)
  • feed_id – ID feed (ако е feed)

meta (карта)

  • external_canonical – каноничен външен URL

children (preview под-елементи)

  • items – масив от Card (лек preview модел)

extensions

Engine-specific данни (например extensions.ms)


show_group_id (Maksoft специфично)

Поле в PAGE, което указва асоциирана група.

  • Ако > 0 → генерира се stream group_pages

Йерархичен приоритет при рендериране

  1. search_results (ако съществува)
  2. children (subpages)
  3. group_pages
  4. feed_items
  5. custom

Темата може да пропуска, но редът е препоръчителен.


Основни принципи

  • PAGE управлява display
  • content.html остава пълният HTML източник
  • content.sections е semantic extraction layer за темите
  • Streams нямат display логика
  • Card е унифициран публичен модел
  • Media е отделен унифициран обект
  • Йерархията чрез parent_id е задължителна
  • Virtual страници използват същата PAGE структура
  • Extensions изолират Maksoft-specific данни

Начало /  /  / Документация /  / Страница и card - SSR структура
Maksoft.Bg Maksoft.Net BrandIT