Přejít na obsah

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:

bash
composer require rankbeam/laravel-seo
php artisan vendor:publish --tag=seo-config
php artisan migrate

Service 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

php
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

blade
<!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

php
$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ě)

php
// e.g. in AppServiceProvider::boot()
use App\Models\Post;
use Rankbeam\Seo\Facades\SEO;

SEO::sitemaps()->register('posts', Post::class);
bash
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

rankbeam/laravel-seo je distribuován pod licencí MIT.