Rychlý start
Začněte existující aplikací Laravelu 11, 12 nebo 13 s funkční databází. Laravel 11: PHP 8.2–8.4; Laravel 12: PHP 8.2–8.5; Laravel 13: PHP 8.3–8.5. Jádro je zdarma pod licencí MIT a nevyžaduje účet ani licenci Pro.
Instalace
Spusťte tyto příkazy z adresáře aplikace:
composer require rankbeam/laravel-seo
php artisan vendor:publish --tag=seo-config
php artisan migrateService provider se objeví automaticky. Migrace vytvoří SEO tabulky, nikoli obsahové modely vaší aplikace.
Předpoklady příkladu
Následující kroky předpokládají existující model Post, uložený příspěvek a routu posts.show, jejíž šablona Blade dostává příspěvek jako $post. Názvy přizpůsobte aplikaci. Průvodce přidává SEO k této stránce, nevytváří blog.
Nastavte APP_URL v .env na veřejný origin webu. Pro jiné způsoby vykreslování použijte průvodce Inertia a JSON nebo průvodce Livewire.
1. Přidejte trait k modelu
use Illuminate\Database\Eloquent\Model;
use Rankbeam\Seo\Traits\HasSEO;
class Post extends Model
{
use HasSEO;
public function getUrlForSEO(): string
{
return route('posts.show', $this);
}
}getUrlForSEO() říká resolveru, na jaké kanonické URL model žije. Poskytuje podklad pro kanonické adresy, og:url a záznamy v mapě webu.
2. Vykreslete hlavičku
<!DOCTYPE html>
<html>
<head>
@seo($post)
</head>@seo($post) vypíše titulek, meta popis, kanonickou adresu, robots, značky Open Graph a Twitter Card a JSON-LD připojená k vyhodnoceným datům. Pokud zatím nejsou uložené explicitní hodnoty, vše pochází z vypočtených náhradních hodnot — vlastních atributů příspěvku — a nastavených výchozích hodnot. Viz pořadí přednosti resolveru.
3. Nastavte explicitní hodnoty
$post->saveSEO([
'title' => 'Custom SEO Title',
'description' => 'Custom meta description',
]);Explicitní hodnoty mají přednost před všemi náhradními vrstvami. Pro přeložená metadata předejte jazykovou verzi: $post->saveSEO(['title' => 'Titre'], 'fr').
Plníte modely pomocí seederů?
Výchozí DatabaseSeeder Laravelu používá trait WithoutModelEvents, který bez upozornění vypíná automatické vytváření z HasSEO. Trait odeberte nebo v seederech výslovně volejte saveSEO().
4. Ověřte výsledek
Otevřete veřejnou stránku příspěvku a zvolte Zobrazit zdrojový kód stránky. V <head> ověřte, že titulek obsahuje Custom SEO Title, popis je Custom meta description a kanonická adresa odkazuje na veřejnou URL příspěvku. Za titulkem může následovat nakonfigurovaná přípona.
Vykreslujte @seo($post) jednou na stránku. Pokud layout už obsahuje titulek nebo metatagy, nahraďte je, aby nevznikaly duplicity. Původ neočekávané hodnoty zjistíte podle průvodce vyhodnocováním.
5. Přidejte mapu webu (volitelně)
// e.g. in AppServiceProvider::boot()
use App\Models\Post;
use Rankbeam\Seo\Facades\SEO;
SEO::sitemaps()->register('posts', Post::class);composer require spatie/laravel-sitemap
php artisan seo:sitemap/sitemap.xml nyní poskytuje vygenerovaný index. Všechny možnosti popisuje průvodce registrem map webu.
Kam dál
- Pořadí přednosti resolveru — jak se vybírají hodnoty
- Průvodce Blade — všech sedm direktiv
- Inertia a JSON — headless vykreslování
- Graf strukturovaných dat — propojená JSON-LD
- Pole Filament — administrační rozhraní ve dvou řádcích