NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Posts for Laravel

Titulný obrázok a galéria

Priložený model Post vlastní cez concern HasPostMedia tri skupiny médií z media-library-for-laravel:

SkupinaKonfiguračný kľúčTvarPrijíma
featuredmedia.featured_bucketjeden súbor — nový nahradí predošlý; voliteľná záložná URLimage/jpeg, image/png, image/webp, image/gif, image/avif
gallerymedia.gallery_bucketviac súborov, poradie sa zachováimage/jpeg, image/png, image/webp, image/gif, image/avif
contentmedia.content_bucketviac súborov — vlastní médiá vložené cez [media:UUID]ľubovoľný typ

Každá skupina používa posts.media.disk, ak je nastavený, a posts.media.responsive_widths (zoznam kladných celých čísel — iná položka vyhodí InvalidConfigurationException; [] neurčí žiadne varianty); null znamená predvolené hodnoty media-library. Responzívne šírky vzniknú ako varianty s názvom responsive-{width}.

Titulný obrázok a galéria

// Featured image (single-file — a new attach replaces the previous one)
$post->addMedia($request->file('cover'))->toMediaBucket($post->featuredBucket());
$post->featuredImage();                    // ?Media
$post->featuredImageUrl();                 // string ('' or the configured fallback when empty)
$post->featuredImageUrl('responsive-640'); // the variant once generated, else the original

// Gallery (multi-file, order preserved)
$post->addMedia($request->file('photo'))->toMediaBucket($post->galleryBucket());
$post->galleryImages();                    // Collection<int, Media>
$post->galleryImageUrls();                 // list<string>
$post->galleryImageUrls('responsive-320'); // list<string> — each variant once generated, else the original

// The configured bucket names
$post->featuredBucket();   // 'featured'
$post->galleryBucket();    // 'gallery'
$post->contentBucket();    // 'content'

Varianty sa generujú vo fronte, preto featuredImageUrl($variant) a galleryImageUrls($variant) vrátia URL variantu, až keď existuje, a dovtedy — alebo pri neznámom názve — URL originálu, takže stránka nespadne.

Všetky ostatné metódy media-library — getMedia(), getFirstMediaUrl(), hasMedia(), clearMediaBucket(), addMediaFromUrl() a ďalšie — má príspevok k dispozícii cez InteractsWithMedia.

Nastavenia médií

'media' => [
    'disk' => env('POSTS_MEDIA_DISK'),                                  // null = media-library default
    'featured_fallback_url' => env('POSTS_MEDIA_FEATURED_FALLBACK'),
    'responsive_widths' => [480, 960, 1440],                            // positive ints; null = media-library default, [] = no variants
    'seo_og_image' => true,
    'og_variant' => '',                                                 // '' = the original, or a variant such as 'responsive-960'
    'warm_on_publish' => true,
],

Titulný obrázok ako og:image

Ak príspevok nemá explicitný og:image, seo()->ogImage aj obrázok v JSON-LD použijú URL titulného obrázka — vo variante posts.media.og_variant, keď je už vygenerovaný, inak originál (aj keď je nastavenie prázdne). Vypnete to cez posts.media.seo_og_image.

Predgenerovanie variantov pri publikovaní

Pri PostPublished listener WarmPostMediaVariants vo fronte odošle GenerateVariantsJob z media-library pre každé médium v skupinách featured, gallery a content, takže responzívne varianty sú pripravené v momente zverejnenia. Nerobí nič, ak je posts.media.warm_on_publish false, príspevok už neexistuje alebo nemá žiadne médiá.

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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.