Titulný obrázok a galéria
Priložený model Post vlastní cez concern HasPostMedia tri skupiny médií z media-library-for-laravel:
| Skupina | Konfiguračný kľúč | Tvar | Prijíma |
|---|---|---|---|
featured | media.featured_bucket | jeden súbor — nový nahradí predošlý; voliteľná záložná URL | image/jpeg, image/png, image/webp, image/gif, image/avif |
gallery | media.gallery_bucket | viac súborov, poradie sa zachová | image/jpeg, image/png, image/webp, image/gif, image/avif |
content | media.content_bucket | viac 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 kryptomienOdoslaní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.