SEO meta tagy
meta_title a meta_description sú preložiteľné stĺpce; všetky ostatné SEO polia sú v nepreložiteľnom balíku seo na príspevku. Nastavíte ich cez DTO SeoData:
use RoundlyConsulting\Posts\DataTransferObjects\SeoData;
use RoundlyConsulting\Posts\Facades\Posts;
Posts::seo($post, new SeoData( // saves; $post->setSeo($data) only sets the attributes
metaTitle: 'Custom title',
canonical: 'https://example.com/posts/hello-world',
ogImage: 'https://example.com/cover.png',
robots: 'index,follow',
));Posts::seo() zavolá setSeo() modelu a príspevok uloží. setSeo() zapíše metaTitle / metaDescription (ak nie sú null) ako preklad v aktuálnom jazyku a celý balík seo nahradí ostatnými poľami DTO — odovzdajte preto všetky polia, ktoré chcete zachovať. Sám o sebe neukladá:
// The model form sets the attributes without saving:
$post->setSeo(new SeoData(ogImage: 'https://example.com/cover.jpg'));
$post->save();Vykreslenie tagov
<head>
{!! $post->renderMetaTags() !!} {{-- <title>, description, canonical, og:*, twitter:*, robots --}}
{!! $post->renderJsonLd() !!} {{-- <script type="application/ld+json"> BlogPosting/Article --}}
</head>renderMetaTags() vykreslí šablónu posts::meta a vypíše len tagy, ktoré majú hodnotu, každý escapovaný:
<title>Custom title</title>
<meta name="description" content="A short summary">
<meta name="robots" content="index,follow">
<link rel="canonical" href="https://example.com/posts/hello-world">
<meta property="og:title" content="Custom title">
<meta property="og:description" content="A short summary">
<meta property="og:type" content="article">
<meta property="og:image" content="https://example.com/cover.png">
<meta property="og:site_name" content="Example Blog">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@example">Doplnenie hodnôt
seo() vráti SeoData so zlúčenými predvolenými hodnotami z konfigurácie a doplnením. Meta polia používajú rovnaký záložný jazyk ako $post->title: najprv meta hodnotu alebo nadpis v aktuálnom jazyku, potom v záložnom, potom v ľubovoľnom — príspevok s nadpisom len v angličtine tak na slovenskej stránke stále vykreslí <title> aj headline v JSON-LD:
$seo = $post->seo(); // SeoData with config defaults + fallbacks merged
$seo->metaTitle; // meta_title → title, current locale → fallback → any locale
$seo->metaDescription; // meta_description → perex, same locale chain
$seo->ogImage; // explicit og:image → featured image URL → null
$seo->twitterCard; // explicit → posts.seo.default-card| Pole | Zdroj hodnoty |
|---|---|
metaTitle | meta_title → title v aktuálnom jazyku, potom tá istá dvojica v záložnom jazyku, potom v ľubovoľnom → null |
metaDescription | meta_description → perex, po rovnakom reťazci jazykov → null |
canonical | len uložená hodnota |
twitterCreator | len uložená hodnota |
ogTitle | uložená hodnota → metaTitle |
ogDescription | uložená hodnota → metaDescription |
ogImage | uložená hodnota → URL titulného obrázka vo variante media.og_variant, ak už je vygenerovaný, inak originálu (ak je zapnuté media.seo_og_image) → null |
ogType | uložená hodnota → article |
twitterCard | uložená hodnota → seo.default-card |
twitterSite | uložená hodnota → seo.twitter-site |
robots | uložená hodnota → seo.default-robots |
ogSiteName | uložená hodnota → seo.site-name |
Úprava vzhľadu
Publikujte posts-views a upravte meta.blade.php, ktorá dostáva $seo (SeoData).
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.