Vývojář Šablony a data ve views

Šablony a data ve views

Každá šablona tématu dostává bohatou, předem poskládanou sadu proměnných — obsah, nastavení webu, navigaci, média a SEO data. Tento článek je referencí těchto dat a pravidel, kterých by se šablony měly držet.

Jak se šablona vybírá

Pro obsah typu page na webu se šablonou mytheme Laravix vykreslí themes.mytheme::page.show. Když view neexistuje, spadne na themes.mytheme::default. Stejná konvence platí pro každý typ obsahu včetně pluginových.

Dostupné proměnné

Skládá je Laravix\Cms\Services\PageDataBuilder a CMS controller:

Proměnná Typ Obsah
$content Content Vykreslovaný obsah s načtenými fields a taxonomies
$site Site Aktuální web
$seo array title, description, og_image_url, noindex, canonical — fallbacky obsah → nastavení už aplikované
$settings Collection Všechna nastavení webu jako klíč ⇒ hodnota
$navigations array Položky menu hlavičky/patičky, už lokalizované pro aktuální jazyk
$navDesign array Hodnoty designu ze záložek Design u navigace
$logoMedia, $faviconMedia ?Media Logo a favicon z nastavení, vyřešené na modely
$mediaMap Collection Mapa id ⇒ Media všech médií, na která se stránka odkazuje
$navPages Collection Publikované stránky/archivy aktuálního jazyka (id, title, slug, is_homepage) — pro stavbu jednoduchých menu
$archivePosts ?Collection Jen u obsahu typu archive: publikované příspěvky od nejnovějšího
$grapesjsHtml ?string HTML z vizuálního builderu, už hydratované (naplněné výpisy příspěvků, aplikované pluginové hydratory)
$defaultLocale, $currentLocale string Kódy jazyků
$alternates Collection locale ⇒ absolutní URL publikovaných překladů (pro hreflang)
$systemFieldKeys array Klíče polí registrovaných v kódu — hodí se k oddělení od ad-hoc polí

Práce s médii

Modely médií nabízejí $media->url (originál) a $media->variantUrl(ImageVariant::LARGE) pro zmenšené varianty (THUMBNAIL, MEDIUM, LARGE, OG, FAVICON, FULL — viz Laravix\Cms\Enums\ImageVariant). Vždy vykreslete nejmenší variantu, která na dané místo stačí.

Práce s fieldy

@php $fields = $content->fields->pluck('value', 'key'); @endphp
{{ $fields->get('excerpt') }}

Vykreslení obsahu z builderu

Obsah navržený ve vizuálním builderu přichází jako $grapesjsHtml. Obsah postavený z klasických bloků přichází jako pole $content->blocks. Jádro dodává partial, který zvládá obojí, včetně JavaScriptu pro slidery, záložky, odpočty a bloky s vlastním kódem:

@include('laravix::cms.builder-content')

page/show.blade.php výchozí šablony dělá přesně tohle, když builder obsah existuje, a jinak spadne na prosté rozložení s titulkem a poli. Pokud bloky vykreslujete sami, každá položka $content->blocks je ['type' => ..., 'data' => [...]] a mapuje se na view šablony blocks/{type}.blade.php, které dostane data bloku plus $mediaMap.

URL a jazyky

Odkazy na jiný obsah stavějte přes $content->path($defaultLocale) — vyřeší úvodní stránku, route prefixy i jazykové prefixy. V layoutu vypisujte alternates:

@foreach ($alternates as $altLocale => $altUrl)
    <link rel="alternate" hreflang="{{ $altLocale }}" href="{{ $altUrl }}">
@endforeach

SEO kontrakt

Layouty by měly ctít pole $seo: $seo['title'] do <title>, vypsat popis a canonical odkaz, při $seo['noindex'] vydat robots meta noindex,nofollow a $seo['og_image_url'] použít pro Open Graph. layouts/app.blade.php výchozí šablony je kompletní referenční implementace včetně Open Graphu, Twitter karet a JSON-LD.

Související články

Laravix Documentation · 14.07.2026
Star on GitHub