---
title: "Slugy — Posts for Laravel | Roundly"
description: "Slugy pre každý jazyk generované z nadpisu, unikátne v rámci jazyka s databázovými indexmi, normalizované ručné zadanie a príkazy na doplnenie."
url: https://roundly-consulting.com/sk/open-source/navody/posts-for-laravel/slugy
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Posts for Laravel](https://roundly-consulting.com/sk/open-source/navody/posts-for-laravel.md)

# Slugy

Príspevky, kategórie a tagy majú mapu slugov pre každý jazyk, ktorú spravuje sluggable-for-laravel. Slugy príspevkov vznikajú z posts.slugs.source (predvolene title); slugy kategórií a tagov z name.

- Generujú sa pre každý jazyk, ktorý má zdrojovú hodnotu a v ktorom slug vyhľadávanie dokáže nájsť: aktuálny jazyk, posts.locales.fallback a sluggable.locales.supported (predvolene app.locale + app.fallback\_locale). Prázdny nadpis alebo nadpis, z ktorého nevznikne žiadny slug, sa preskočí.
- Dopĺňajú sa, neprepisujú: uloženie, ktoré mení model, doplní jazyky bez slugu; existujúce slugy zostanú, takže úprava nadpisu nikdy nerozbije URL.
- Unikátne v rámci jazyka (posts.slugs.unique): pri kolízii dostanú -2, -3, … v obmedzených dávkových pokusoch. Zmazané záznamy aj záznamy skryté global scopes sa rátajú ako obsadené a unikátne indexy pre jednotlivé jazyky spolu s automatickým opakovaním pokrývajú súbeh dvoch súčasných uložení.
- Ručne zadané slugy sa normalizujú a zjednotia — z Custom Slug vznikne custom-slug, z taken vznikne taken-2 — vrátane tých, ktoré dostane CreatePostAction.

## Čítanie slugov

```php
$post->currentSlug();        // current locale → posts.locales.fallback → any locale
$post->slugFor('sk');        // exactly one locale, no fallback
$post->slugMap();            // ['en' => 'hello-world', 'sk' => 'ahoj-svet'] — with sk in sluggable.locales.supported

// Swappable model: find through the facade, not Post::findBySlug() (which is always the packaged class)
Posts::findBySlug('hello-world');          // current locale → fallback → any locale
Posts::findBySlug('ahoj-svet', 'sk');      // exactly one locale — null on a default install, which has no sk slug
Posts::query()->whereSlug('hello-world')->first();
```

Jazyk mimo tohto zoznamu slug nedostane, aj keď v ňom príspevok má nadpis: pri predvolenej anglickej inštalácii slovenský nadpis nevytvorí slug sk, takže Posts::findBySlug('ahoj-svet', 'sk') vráti null. Všetky jazyky obsahu uveďte v sluggable.locales.supported — ešte pred migráciou, aby ich pokryli unikátne indexy pre jednotlivé jazyky — alebo nainštalujte translatable-for-laravel, ktorého jazyky potom sluggable použije.

## Ručné slugy

```php
$post->setTranslation('slug', 'en', 'Custom Slug')->save();
$post->slugFor('en');        // 'custom-slug' — or 'custom-slug-2' when it is taken
```

## Doplnenie a údržba

Uloženie bez zmien nič nemení, preto jazyky bez slugu — napríklad po pridaní nového jazyka — doplňte príkazmi zo sluggable. Pred vytvorením indexov nad existujúcimi dátami spustite kontrolu duplicít: staršie verzie pri kontrole slugov ignorovali zmazané príspevky, takže živý a zmazaný príspevok môžu mať rovnaký slug.

```bash
# Backfill slugs for locales that have none yet (add --dry-run to preview)
php artisan sluggable:regenerate "RoundlyConsulting\Posts\Models\Post" --mode=missing

# List slugs a unique index would reject — run before indexing existing data
php artisan sluggable:duplicates "RoundlyConsulting\Posts\Models\Post"

# Build the per-locale unique indexes (e.g. for a locale added after migrate)
php artisan sluggable:indexes "RoundlyConsulting\Posts\Models\Post"
```

Rovnaké príkazy spustite aj pre RoundlyConsulting\\Posts\\Models\\Category a RoundlyConsulting\\Posts\\Models\\Tag.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/posts-for-laravel.md)
