Vývojář Vlastní pole

Vlastní pole

Vlastní pole připojují k obsahu strukturovaná data — podtitulek, cenu, úvodní obrázek. Laravix je umí definovat dvěma způsoby: v kódu (přenositelné, verzované) a v administraci (rychlé, per web). Tento článek pokrývá oba plus referenci typů polí.

Typy polí

Oba způsoby definice sdílejí stejné typy (Laravix\Cms\Enums\FieldType):

Typ Komponenta v administraci Ukládaná hodnota
text Textové pole řetězec
textarea Víceřádkový text řetězec
rich_text Rich text editor HTML řetězec
markdown Markdown editor Markdown řetězec
image / file Výběr médií (z knihovny nebo upload) ID média
boolean Přepínač 0/1
select Select (možnosti z config(['options' => [...]])) klíč možnosti
url URL pole řetězec
date / datetime Výběr data / data a času datum jako řetězec
number Číselné pole číslo jako řetězec
color Výběr barvy hex řetězec

Hodnoty se ukládají jako řádky klíč–hodnota do content_fields a ve formuláři obsahu se zobrazují seskupené do sekcí podle group.

Možnost 1: pole v kódu

Registrují se v register() service provideru; ideální pro pluginy a vše, co chcete mít ve verzovacím systému:

use Laravix\Cms\Enums\FieldType;
use Laravix\Cms\Support\FieldDefinition;
use Laravix\Cms\Support\FieldRegistry;

// pro všechny typy obsahu:
FieldRegistry::content([
    FieldDefinition::make('subtitle')->label('Podtitulek'),
]);

// pro jeden typ obsahu:
FieldRegistry::contentType('post', [
    FieldDefinition::make('excerpt')
        ->type(FieldType::TEXTAREA)
        ->label('Úryvek')
        ->group('Detaily příspěvku')
        ->hint('Zobrazuje se ve výpisech příspěvků.'),
]);

Metody FieldDefinition: type(), label(), group() (nadpis sekce formuláře), hint() (nápověda), config() (extra volby, např. ['options' => [...]] u selectů).

Samotné jádro takhle registruje SEO pole (meta_title, meta_description, og_image, noindex) — jsou to prostě pole ve skupině SEO.

Možnost 2: pole v administraci

Správci webu definují pole bez kódu:

  1. Otevřete Custom fields v menu administrace.
  2. Vytvořte pole: Content type, Typ, Klíč (po vytvoření neměnný), Popisek, volitelně Skupina a Nápověda, Pořadí, přepínač Povinné.
  3. Pole se okamžitě objeví ve formuláři obsahu daného typu.

Pole z administrace jsou per web — ideální pro data specifická jednomu webu. Definice se cachují na hodinu, ale cache se při uložení nebo smazání pole automaticky maže.

Tip: Když pole z administrace použije stejný klíč jako pole z kódu, vyhrává definice z kódu. A na headless webech formulář obsahu ukazuje jen pole definovaná v administraci — SEO pole z kódu se skrývají, protože SEO je práce frontendu.

Čtení polí

V šablonách:

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

U polí image/file je hodnotou ID média — vyřešte ho přes $mediaMap[(int) $fields->get('cover')] ?? null (mapa médií už obsahuje všechna média, na která odkazují registrovaná obrázková pole).

V API: každá odpověď s obsahem nese objekt fields se surovými páry klíč–hodnota, takže headless frontend dostane vaše data automaticky. Viz API reference.

Související články

Laravix Documentation · 13.07.2026
Star on GitHub