---
title: "Kreatívy — Advertisements for Laravel | Roundly"
description: "Priraďte obrázkovú kreatívu ku každému umiestneniu, získajte variant display v rozmeroch zóny a vykreslite responzívny <img> alebo textovú reklamu."
url: https://roundly-consulting.com/sk/open-source/navody/advertisements-for-laravel/kreativy
language: sk
---

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

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

# Kreatívy

Každé umiestnenie má vlastnú skupinu kreatív s jediným súborom a variantom display orezaným (cover) na šírku × výšku umiestnenia. Obrázok priraďte a načítajte, alebo ho rovno vykreslite — obrázok, ak existuje, inak textovú reklamu:

```php
// Attach (or replace) the creative for a placement — model, id, or slug.
$ad->addCreative($request->file('banner'), 'sidebar');   // an UploadedFile or a file path

$ad->creativeFor('sidebar');                 // ?Media (placement-specific, then generic)
$ad->creativeUrl('sidebar');                 // display-variant URL, or '' / fallback when empty
$ad->creativeUrl('sidebar', '');             // the original

// Responsive <img> when a creative exists, else the text-ad fallback (name + description + price).
echo Advertisements::render($ad, 'sidebar', ['class' => 'ad']);
echo $ad->renderCreative('sidebar', ['class' => 'ad']); // the same, from the model
```

## Skupiny

Skupiny sa volajú {creative\_bucket\_prefix}:{slug-umiestnenia} a k nim patrí všeobecná skupina {fallback\_bucket} bez rozmerov. Každá prijíma JPEG, PNG, WebP, GIF a AVIF, drží jediný súbor (nové nahratie nahradí starý) a ak sú nastavené, použije media.disk a media.responsive\_widths. Umiestnenie bez rozmerov dostane variant display bez zmeny veľkosti.

```php
$ad->creativeBucketName('sidebar');   // "creative:sidebar"
$ad->fallbackCreativeBucket();        // "creative"
$ad->displayVariant();                // "display"

// A generic, size-less creative for any placement without its own image:
$ad->addMedia($request->file('banner'))->toMediaBucket($ad->fallbackCreativeBucket());
```

- creativeFor() — obrázok konkrétneho umiestnenia, potom všeobecná kreatíva (ak je media.use\_fallback\_bucket zapnuté), inak null.
- creativeUrl() — predvolene URL variantu display; zadajte iný názov variantu alebo '' pre originál. Ak nič nie je priradené, vráti záložnú URL skupiny alebo ''.
- Advertisements::render($ad, $placement) — responzívny <img> so srcset (alt predvolene z názvu reklamy), ak existuje obrázková kreatíva, inak textovú reklamu. $ad->renderCreative() je skratka pre to isté volanie.

## Záložná textová reklama

Bez obrázkovej kreatívy vykreslí render() Blade view advertisements::text-ad: div.advertisement-text-ad v rozmeroch umiestnenia s atribútom data-advertisement, ktorý obsahuje názov, vyplnený popis a cenu naformátovanú v aktívnom jazyku. Na úpravu vzhľadu view publikujte alebo nasmerujte media.text\_ad\_view na vlastný — neexistujúci view skončí zreteľnou chybou InvalidArgumentException.

```bash
php artisan vendor:publish --tag="advertisements-views"
# → resources/views/vendor/advertisements/text-ad.blade.php
```

- $advertisement — vykresľovaná Advertisement.
- $placement — nájdené ?Placement.
- $attributes — pole odovzdané do render() alebo renderCreative().

## Atribúty vykreslenia

Textová reklama použije na svojom <div> každý odovzdaný atribút, escapovaný: class a style pripojí k vlastným (class="advertisement-text-ad ad"), ostatné pridá alebo nimi prepíše predvolené. Pri obrázku ich dostane responzívny <img> z media-library, ktorý prijíma class, alt (predvolene názov reklamy) a sizes.

## Vlastný renderer

Advertisements::render() ide cez naviazaný RoundlyConsulting\\Advertisements\\Contracts\\CreativeRenderer. Celý reťazec vykresľovania vymeníte naviazaním vlastnej implementácie:

```php
use Illuminate\Support\HtmlString;
use RoundlyConsulting\Advertisements\Contracts\CreativeRenderer;
use RoundlyConsulting\Advertisements\Models\Advertisement;
use RoundlyConsulting\Advertisements\Models\Placement;

final class NativeAdRenderer implements CreativeRenderer
{
    public function render(Advertisement $advertisement, Placement|int|string $placement, array $attributes = []): HtmlString
    {
        return new HtmlString(view('ads.native', ['ad' => $advertisement])->render());
    }
}

// AppServiceProvider::register()
$this->app->bind(CreativeRenderer::class, NativeAdRenderer::class);
```

Kreatívy sú riadky Media z media-library, takže na ne platí všetko, čo tento balík ponúka — varianty, responzívny srcset, súkromné a dočasné URL.

## 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/advertisements-for-laravel.md)
