Vývojář Obsahový model

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:

  1. KódFieldRegistry::content([...]) pro všechny typy (jádro registruje SEO fieldy meta_title, meta_description, og_image, noindex) a FieldRegistry::contentType('doc', [...]) per typ.
  2. 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í.

Související články

Laravix Documentation · 14.07.2026
Star on GitHub