Obsahový model
Všechno redakční v Laravixu — stránky, příspěvky, archivy, typy definované pluginy — je řádek v tabulce contents. Tento článek mapuje obsahový model: samotný model Content, custom fieldy, taxonomie, revize, překlady a URL.
Model Content
Laravix\Cms\Models\Content nese:
| Atribut | Význam |
|---|---|
site_id |
Vlastnící web (tenant) |
type |
Klíč typu obsahu: page, post, archive, nebo pluginový typ jako doc |
title, slug |
Název a segment URL; slug je unikátní per web a jazyk |
is_homepage |
Nejvýše jeden per web a jazyk; vykresluje se na / |
status |
Enum ContentStatus: draft, published, scheduled |
published_at |
Okamžik publikace u plánovaného obsahu; zároveň řadicí klíč příspěvků |
locale, translation_group_id |
Jazyk a skupina spojující překlady téhož obsahu |
blocks |
JSON pole dat klasických bloků (vykreslují je blokové views šablony) |
grapesjs_data, grapesjs_html |
Projektová data vizuálního builderu a exportované HTML |
sort_order |
Ruční pořadí (drag & drop v seznamu v administraci) |
created_by |
Autor (relace author()) |
Obsah je soft-deleted (obnovitelný z Koše), loguje se do per-site activity logu a indexuje pro vyhledávání přes Laravel Scout — jen když je publikovaný.
Typy obsahu
Typy se registrují v kódu přes ContentTypeRegistry — jádro registruje page, post a archive. Definice typu určuje popisky, zda se typ nabízí v navigaci, zda má vizuální builder, volitelný route prefix a jaké typy taxonomií přijímá. Viz Vlastní content typy.
Pravidla publikace
Obsah je veřejně viditelný, když status = published a zároveň published_at je null nebo v minulosti. Příkaz laravix:publish-scheduled (naplánovaný každou minutu) překlápí scheduled obsah na published, když jeho čas nastane.
Custom fieldy
Atributy obsahu nad rámec základních sloupců žijí v tabulce content_fields jako řádky klíč–hodnota (relace fields()). Které fieldy existují, určují dva zdroje:
- Kód —
FieldRegistry::content([...])pro všechny typy (jádro registruje SEO fieldymeta_title,meta_description,og_image,noindex) aFieldRegistry::contentType('doc', [...])per typ. - Databáze — admin resource Custom fields, kde správci definují pole pro typ obsahu bez kódu.
Typy polí (Laravix\Cms\Enums\FieldType): text, textarea, rich_text, markdown, image, file, boolean, select, url, date, datetime, number, color. Podrobnosti v článku Vlastní pole.
Taxonomie
Řádky Taxonomy jsou per-site popisky s type (jádro: category, tag; pluginy přidávají další, např. doc-category), volitelnou hierarchií parent_id, per-locale translations a tahacím sort_order. Obsah se k taxonomiím váže přes pivot content_taxonomy. Typ obsahu může přes svou definici omezit, jaké typy taxonomií přijímá.
Revize
Každé uložení formuláře obsahu zapíše snapshot ContentRevision: název, slug, status, příznak úvodní stránky, datum publikace, bloky a hodnoty všech polí. Uložení v builderu přidává revize dat builderu. Revize lze vracet z administrace (relation manager Revize na editační stránce).
Překlady
Překlady jednoho logického obsahu sdílejí translation_group_id a liší se locale. Akce Přeložit naklonuje obsah (včetně polí) do nového jazyka jako koncept. Na frontendu se výchozí jazyk vykresluje bez prefixu v URL a ostatní jazyky pod /{locale}/...; hreflang alternates se pro publikované překlady generují automaticky.
Generování URL
Content::path() staví veřejnou cestu: / pro úvodní stránku, jinak /{slug}, s prefixem route prefixu typu obsahu, pokud ho má (např. docs → /docs/{slug}), a s prefixem jazyka u ne-výchozích jazyků. Middleware HandleRedirects obsluhuje staré URL registrované na obsahu — viz klientský článek Přesměrování.
Text pro vyhledávání
Pro fulltextové vyhledávání Laravix udržuje sloupec search_text: očištěný text z HTML builderu, klasických bloků a hodnot polí (do 60 000 znaků), automaticky obnovovaný při uložení. Viz Fulltextové vyhledávání.