---
title: "Konfigurácia — Posts for Laravel | Roundly"
description: "Každý konfiguračný kľúč a jeho predvolená hodnota — typy kľúčov, tabuľky, autor, jazyky, slugy, SEO, JSON-LD, médiá a moderácia."
url: https://roundly-consulting.com/sk/open-source/navody/posts-for-laravel/konfiguracia
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)

# Konfigurácia

Každý kľúč má predvolenú hodnotu a tie bežné sa čítajú z env, takže balík funguje aj bez publikovanej konfigurácie. Publikovaný config/posts.php v plnom znení:

```php
return [
    'model' => RoundlyConsulting\Posts\Models\Post::class,

    'key_type' => env('POSTS_KEY_TYPE', 'bigint'),                 // your author model's key
    'primary_key_type' => env('POSTS_PRIMARY_KEY_TYPE', 'bigint'), // the posts tables' own ids

    'tables' => [
        'posts' => 'posts',
        'categories' => 'post_categories',
        'category_post' => 'category_post',
        'tags' => 'post_tags',
        'tag_post' => 'post_tag',
    ],

    'author' => [
        'morph-name' => 'author',
        'nullable' => true,
    ],

    'locales' => [
        'fallback' => env('POSTS_FALLBACK_LOCALE', config('app.fallback_locale', 'en')),
    ],

    'slugs' => [
        'source' => 'title',
        'separator' => '-',
        'unique' => true,
        'route-binding' => true,
        'history' => env('POSTS_SLUG_HISTORY', false),
        'lock-when-published' => false,
    ],

    'seo' => [
        'site-name' => env('POSTS_SITE_NAME'),
        'twitter-site' => env('POSTS_TWITTER_SITE'),
        'default-card' => 'summary_large_image', // 'summary' | 'summary_large_image' | 'app' | 'player'
        'default-robots' => 'index,follow',
    ],

    'json-ld' => [
        'type' => 'BlogPosting', // 'BlogPosting' | 'Article' (anything else throws)
        'author-attribute' => 'name',
        'publisher' => [
            'name' => env('POSTS_PUBLISHER_NAME'),
            'logo' => env('POSTS_PUBLISHER_LOGO'),
        ],
    ],

    'media' => [
        'featured_bucket' => 'featured',
        'gallery_bucket' => 'gallery',
        'content_bucket' => 'content',
        'disk' => env('POSTS_MEDIA_DISK'),
        'featured_fallback_url' => env('POSTS_MEDIA_FEATURED_FALLBACK'),
        'responsive_widths' => null,
        'seo_og_image' => true,
        'og_variant' => '',
        'warm_on_publish' => true,
        'inline' => [
            'enabled' => true,
            'default_variant' => '',
            'on_missing' => 'strip', // 'strip' | 'keep' (anything else throws)
        ],
    ],

    'moderation' => [
        'on_resolved' => 'archive', // 'archive' | 'draft' | null — anything else throws
        'auto_unpublish' => true,
    ],
];
```

## Všetky kľúče

| Kľúč | Predvolené | Env | Účel |
| --- | --- | --- | --- |
| `model` | Post::class | — | Model príspevku — nasmerujte ho na vlastnú podtriedu. |
| `key_type` | bigint | `POSTS_KEY_TYPE` | Odchádzajúci: typ kľúča vášho modelu autora (bigint, uuid alebo ulid); určuje author\_id. Čokoľvek iné vyhodí InvalidConfigurationException. |
| `primary_key_type` | bigint | `POSTS_PRIMARY_KEY_TYPE` | Prichádzajúci: typ kľúča tabuliek príspevkov, kategórií, tagov a ich pivotov (bigint, uuid alebo ulid). Čokoľvek iné vyhodí InvalidConfigurationException. |
| `tables.posts` | posts | — | Tabuľka príspevkov. |
| `tables.categories` | post\_categories | — | Tabuľka kategórií. |
| `tables.category_post` | category\_post | — | Pivot kategória ⇄ príspevok. |
| `tables.tags` | post\_tags | — | Tabuľka tagov. |
| `tables.tag_post` | post\_tag | — | Pivot tag ⇄ príspevok. |
| `author.morph-name` | author | — | Názov morph relácie a prefix stĺpcov (author\_type / author\_id). |
| `author.nullable` | true | — | Či môže príspevok existovať bez autora. |
| `locales.fallback` | app.fallback\_locale | `POSTS_FALLBACK_LOCALE` | Záložný jazyk pre čítanie prekladov a reťazec slugov. |
| `slugs.source` | title | — | Atribút, z ktorého vznikajú slugy príspevkov (kategórie a tagy vždy z name). |
| `slugs.separator` | \- | — | Oddeľovač slov v slugu. |
| `slugs.unique` | true | — | Unikátnosť v rámci jazyka (-2, -3, …, vrátane zmazaných záznamov); pri migrácii vytvorí aj unikátne indexy pre každý jazyk. |
| `slugs.route-binding` | true | — | Slug je route kľúčom príspevku; {post} sa viaže naprieč reťazcom jazykov. |
| `slugs.history` | false | `POSTS_SLUG_HISTORY` | Pamätá si vyradené slugy a staré URL presmeruje cez 301 (vyžaduje sluggable-migrations). |
| `slugs.lock-when-published` | false | — | Zmrazí slugy publikovaného príspevku; ručná zmena vyhodí SlugLockedException. |
| `seo.site-name` | null | `POSTS_SITE_NAME` | Predvolený og:site\_name. |
| `seo.twitter-site` | null | `POSTS_TWITTER_SITE` | Predvolený účet twitter:site. |
| `seo.default-card` | summary\_large\_image | — | Predvolený typ twitter:card: summary, summary\_large\_image, app alebo player; čokoľvek iné vyhodí výnimku. |
| `seo.default-robots` | index,follow | — | Predvolená direktíva robots. |
| `json-ld.type` | BlogPosting | — | schema.org @type: BlogPosting alebo Article; čokoľvek iné vyhodí výnimku. |
| `json-ld.author-attribute` | name | — | Atribút modelu autora použitý ako meno autora. |
| `json-ld.publisher.name` | null | `POSTS_PUBLISHER_NAME` | Názov vydavateľa (ak nie je nastavený, publisher sa vynechá). |
| `json-ld.publisher.logo` | null | `POSTS_PUBLISHER_LOGO` | URL loga vydavateľa. |
| `media.featured_bucket` | featured | — | Skupina titulného obrázka (jeden súbor). |
| `media.gallery_bucket` | gallery | — | Skupina galérie (viac súborov). |
| `media.content_bucket` | content | — | Skupina médií vložených do textu cez \[media:UUID\]. |
| `media.disk` | null | `POSTS_MEDIA_DISK` | Disk pre médiá príspevkov (null = predvolený disk media-library). |
| `media.featured_fallback_url` | null | `POSTS_MEDIA_FEATURED_FALLBACK` | URL, ktoré vráti featuredImageUrl(), keď titulný obrázok chýba (null = ''). |
| `media.responsive_widths` | null | — | Rebrík responzívnych šírok z kladných celých čísel (null = predvolený z media-library, \[\] = žiadne varianty); iná položka vyhodí výnimku. |
| `media.seo_og_image` | true | — | Ak og:image chýba, použije sa titulný obrázok (aj v JSON-LD). |
| `media.og_variant` | '' | — | Variant pre tento fallback ('' = originál) — taký, ktorý media-library generuje pre skupinu featured, napr. responsive-640; kým neexistuje alebo pri neznámom názve sa použije URL originálu. |
| `media.warm_on_publish` | true | — | Pri publikovaní zaradí generovanie variantov médií do fronty. |
| `media.inline.enabled` | true | — | Rozbalí tokeny \[media:UUID\] v renderContent(). |
| `media.inline.default_variant` | '' | — | Variant pre tokeny bez \|variant; rovnako ako pri vlastnom variante tokenu sa pri neznámom či ešte nevygenerovanom vykreslí originál. |
| `media.inline.on_missing` | strip | — | Token s médiom, ktoré príspevok nevlastní, odstráni (strip) alebo ponechá (keep); čokoľvek iné vyhodí výnimku. |
| `moderation.on_resolved` | archive | — | Akcia pri potvrdenom nahlásení publikovaného alebo naplánovaného príspevku: archive, draft, alebo null či prázdna hodnota (vypnuté). Preklep vyhodí výnimku namiesto toho, aby sa automatické zrušenie publikovania preskočilo. |
| `moderation.auto_unpublish` | true | — | Archivuje publikovaný alebo naplánovaný príspevok, ktorý prekročí globálny reports.threshold. |

## Prostredie (env)

Hodnoty špecifické pre web sa nastavujú cez env, takže väčšina aplikácií konfiguráciu vôbec nepublikuje:

```bash
POSTS_KEY_TYPE=bigint
POSTS_PRIMARY_KEY_TYPE=bigint
POSTS_FALLBACK_LOCALE=en
POSTS_SLUG_HISTORY=false
POSTS_SITE_NAME="Example Blog"
POSTS_TWITTER_SITE=@example
POSTS_PUBLISHER_NAME="Example Ltd"
POSTS_PUBLISHER_LOGO=https://example.com/logo.png
POSTS_MEDIA_DISK=public
POSTS_MEDIA_FEATURED_FALLBACK=https://example.com/images/placeholder.png
```

## Striktné hodnoty

Každý prepínač typu bool sa číta striktne: true/1/on/yes ho zapnú, false/0/off/no vypnú, prázdna hodnota (POSTS\_SLUG\_HISTORY=) sa považuje za nenastavenú, takže platí predvolená, a čokoľvek iné (napríklad POSTS\_SLUG\_HISTORY=disabled) vyhodí RoundlyConsulting\\PackageToolkit\\Exceptions\\InvalidConfigurationException namiesto toho, aby sa potichu prečítalo ako predvolená hodnota.

Rovnako striktne sa čítajú aj všetky ostatné nastavenia. Nastavenie bez hodnoty — kľúč chýba, je null alebo je prázdny ako riadok POSTS\_SITE\_NAME= v hostiteľskej aplikácii — použije svoju predvolenú hodnotu a voliteľné nastavenie (údaje vydavateľa pre SEO a JSON-LD, disk médií či záložná URL) zostane nenastavené. Reťazcové nastavenie — názov tabuľky či bucketu, názov morph relácie, zdroj alebo oddeľovač slugu, jazyk, hodnota SEO či JSON-LD, disk médií alebo záložná URL — musí byť pri nastavení reťazec: hodnota, ktorá nie je reťazcom, vyhodí výnimku, namiesto pretypovania na '' či nahradenia predvolenou hodnotou. Hodnota seo.default-card, json-ld.type, media.inline.on\_missing či moderation.on\_resolved mimo povoleného zoznamu vyhodí výnimku, rovnako ako responzívna šírka, ktorá nie je kladným celým číslom. Názvy variantov — media.og\_variant a media.inline.default\_variant — prijmú akýkoľvek reťazec, pričom '' znamená originál.

## Kontrola nastavenia

```bash
php artisan about
```

php artisan about zobrazí sekciu Posts: základný názov modelu, oba typy kľúčov, či je autor voliteľný, počet tabuliek (DEFAULT alebo CUSTOMISED — prázdny názov tabuľky sa počíta ako predvolený, ktorý modely používajú, nezmyselný sa zobrazí ako INVALID), väzbu rôut, unikátne slugy, históriu a zámok slugov, disk médií (SET alebo MEDIA DEFAULT), médiá v texte, predgenerovanie pri publikovaní, prítomnosť SEO a JSON-LD údajov a prepínače moderácie. Nikdy nevypíše nakonfigurovanú hodnotu, ako je názov tabuľky, disk, vydavateľ či názov webu. Chybné nastavenie disku médií, médií v texte, SEO, JSON-LD či moderácie sa zobrazí ako INVALID.

## 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)
