Přehled registrů
Registry jsou body rozšíření Laravixu — statické třídy v Laravix\Cms\Support, kam jádro, vaše aplikace i pluginy registrují content typy, pole, bloky, nastavení, routy a další. Tohle je kompletní reference s minimálním příkladem ke každému.
ContentTypeRegistry
use Laravix\Cms\Support\{ContentTypeDefinition, ContentTypeRegistry};
ContentTypeRegistry::register(
ContentTypeDefinition::make('project')
->label('Projekt')->pluralLabel('Projekty')
->linkableInNavigation() // nabízet v editoru menu
->builder(false) // bez záložky vizuálního builderu
->routePrefix('projects') // veřejné URL /projects/{slug}
->taxonomyTypes(['category']), // povolené typy taxonomií
);
Čtení: all(), keys(), has($key), find($key), default() (první registrovaný typ), options(), navigationLinkableKeys(). Podrobnosti: Vlastní content typy.
TaxonomyTypeRegistry
use Laravix\Cms\Support\TaxonomyTypeRegistry;
TaxonomyTypeRegistry::register('project-category', 'Kategorie projektu');
Druhý argument je popisek (prostý řetězec nebo překladový klíč). Čtení: options(), label($key).
FieldRegistry
use Laravix\Cms\Enums\FieldType;
use Laravix\Cms\Support\{FieldDefinition, FieldRegistry};
FieldRegistry::content([...]); // pole pro všechny typy obsahu
FieldRegistry::contentType('project', [
FieldDefinition::make('year')
->type(FieldType::NUMBER)
->label('Rok')
->group('Detaily')
->hint('Čtyři číslice.')
->config([]),
]);
Čtení: forContentType($type, $siteId) slévá pole z kódu s poli definovanými v administraci; grouped() je seskupí pro sekce formuláře. Podrobnosti: Vlastní pole.
SettingRegistry
Přidává pole na obrazovku Nastavení; hodnoty se ukládají per web a do šablon jdou přes $settings:
use Laravix\Cms\Enums\FieldType;
use Laravix\Cms\Support\{SettingDefinition, SettingRegistry};
SettingRegistry::register([
SettingDefinition::make('analytics_id')
->label('Analytics ID')
->group('laravix::settings.tabs.general') // volba záložky
->hint('Measurement ID, např. G-XXXX.')
->required()
->default(null)
->config([]),
]);
Typy odpovídají FieldType (text, textarea, image, url, boolean…). Záložka v administraci se odvozuje z překladového klíče group — použijte core skupiny (laravix::settings.tabs.general, .seo, .social), nebo zaregistrujte vlastní klíč skupiny.
BlockRegistry
use Laravix\Cms\Support\{BlockDefinition, BlockRegistry};
BlockRegistry::register(MyBlock::definition());
Definice s canvasHtml se objeví ve vizuálním builderu; definice se schema se editují jako strukturovaná data. Podrobnosti: Vlastní bloky.
NavigationRegistry
Jádro registruje header a footer. Registrací další dáte webům extra spravované menu (objeví se jako repeater na obrazovce Navigace a v JSON navigations webu):
use Laravix\Cms\Support\{NavigationDefinition, NavigationRegistry};
NavigationRegistry::register(
NavigationDefinition::make('sidebar')->label('Boční navigace'),
);
RouteRegistry
Řadí do fronty closures s registrací rout; Laravix je spustí uvnitř web middleware skupiny po bootu aplikace, před CMS catch-all routou:
use Illuminate\Support\Facades\Route;
use Laravix\Cms\Support\RouteRegistry;
RouteRegistry::register(function () {
Route::get('/projects', ProjectIndexController::class)->name('projects.index');
Route::get('/projects/{slug}', ProjectShowController::class)->name('projects.show');
});
HydratorRegistry
Hydratory post-processují HTML vizuálního builderu při každém vykreslení — changelog plugin jedním injektuje data releasů do zástupného bloku. Implementujte rozhraní BlockHydrator:
use Laravix\Cms\Models\{Content, Site};
use Laravix\Cms\Support\{BlockHydrator, HydratorRegistry};
class ProjectsHydrator implements BlockHydrator
{
public function hydrate(string $html, Site $site, Content $content): string
{
return str_replace('<!--projects-->', view('my-plugin::list')->render(), $html);
}
}
HydratorRegistry::register(ProjectsHydrator::class);
Hydratory se resolvují z kontejneru, takže funguje constructor injection.
FilamentPluginRegistry
Předává admin panelu plnohodnotné Filament pluginy — resources, pages, widgety, render hooky. Musí se volat v register() provideru:
use Laravix\Cms\Support\FilamentPluginRegistry;
FilamentPluginRegistry::register(MyFilamentPlugin::make());
MyFilamentPlugin je standardní implementace Filament\Contracts\Plugin — hotový příklad je třída ChangelogPlugin changelog pluginu.