Seoquent: как добавить SEO в Laravel без лишней боли

SEO в Laravel-проектах часто реализуют вручную: метатеги прописывают в шаблонах, Open Graph дублируют в каждом Blade-файле, канонические ссылки забывают обновлять. В результате код разрастается, а поддерживать его становится сложно. Пакет Seoquent предлагает более аккуратный подход: управлять SEO через fluent-интерфейс прямо из контроллеров или сервисов.

Разберёмся, как он устроен, как его подключить и в каких сценариях он действительно удобен.

Что такое Seoquent

Seoquent - это пакет для Laravel, который позволяет управлять SEO-данными страницы программно. Он объединяет:

  • стандартные meta-теги

  • Open Graph

  • Twitter Cards

  • canonical URL

  • title и description

Главная идея централизовать SEO-логику и убрать её из шаблонов.

Установка

Установка стандартная для Laravel-пакетов:

composer require ibrahim-eng12/seoquent

После установки можно опубликовать конфигурацию:

php artisan vendor:publish --tag=seoquent-config

В проекте появится конфигурационный файл, где можно задать значения по умолчанию.

Базовое использование

Самый простой пример это установка заголовка и описания в контроллере:

use Seoquent;

public function show(Post $post)
{
    Seoquent::title($post->title)
        ->description($post->excerpt)
        ->canonical(route('posts.show', $post));

    return view('posts.show', compact('post'));
}

В Blade-шаблоне достаточно один раз вывести SEO-блок:

{!! Seoquent::render() !!}

После этого в <head> автоматически появятся нужные теги.

Работа с Open Graph

Open Graph особенно важен для социальных сетей. Seoquent позволяет настроить его через тот же fluent-интерфейс:

Seoquent::openGraph()
    ->title($post->title)
    ->description($post->excerpt)
    ->url(route('posts.show', $post))
    ->image($post->featured_image)
    ->type('article');

В результате генерируются теги вида:

<meta property="og:title" content="..." />
<meta property="og:description" content="..." />
<meta property="og:image" content="..." />

Это избавляет от ручного дублирования.

Twitter Cards

Если проект ориентирован на соцсети, можно настроить и Twitter Cards:

Seoquent::twitter()
    ->card('summary_large_image')
    ->title($post->title)
    ->description($post->excerpt)
    ->image($post->featured_image);

Теперь при публикации ссылки в X превью будет отображаться корректно.

Глобальные настройки

В конфигурационном файле можно задать значения по умолчанию:

  • название сайта

  • базовое описание

  • дефолтное изображение

  • разделитель в title

Пример настройки:

'title' => [
    'default' => 'My Website',
    'separator' => ' | ',
],

Это удобно для динамического формирования заголовков вроде:

Название статьи | My Website

Использование в middleware

Если нужно добавлять SEO-данные автоматически, можно вынести логику в middleware.

Например:

namespace App\Http\Middleware;

use Closure;
use Seoquent;

class SetDefaultSeo
{
    public function handle($request, Closure $next)
    {
        Seoquent::title('Мой сайт')
            ->description('Описание по умолчанию');

        return $next($request);
    }
}

Теперь базовые метаданные будут установлены для всех страниц.

Динамическое SEO для блога

Рассмотрим типичный кейс блога.

Контроллер:

public function show(Post $post)
{
    Seoquent::title($post->seo_title ?? $post->title)
        ->description($post->seo_description ?? $post->excerpt)
        ->canonical(route('posts.show', $post));

    Seoquent::openGraph()
        ->title($post->title)
        ->description($post->excerpt)
        ->image($post->featured_image)
        ->type('article');

    return view('posts.show', compact('post'));
}

Такой подход позволяет хранить SEO-поля в базе и гибко ими управлять.

Когда стоит использовать Seoquent

Пакет особенно полезен, если:

  • проект активно использует соцсети

  • много динамических страниц

  • SEO-логика зависит от данных модели

  • хочется держать Blade-шаблоны максимально чистыми

Если сайт небольшой и состоит из нескольких статичных страниц, возможно, проще прописать метатеги вручную.

Плюсы и ограничения

Преимущества:

  • чистые шаблоны

  • централизованная SEO-логика

  • удобный fluent-интерфейс

  • поддержка Open Graph и Twitter

Ограничения:

  • дополнительная зависимость

  • не заменяет полноценные SEO-аудиты

  • не генерирует sitemap и robots.txt

Seoquent это удобный инструмент для Laravel-разработчиков, которые хотят управлять SEO-метаданными на уровне кода, а не шаблонов. Он упрощает поддержку, особенно в проектах с динамическим контентом, и помогает избежать дублирования.

Если в проекте уже используется сервисная архитектура или строгая структура контроллеров, пакет хорошо вписывается в общий подход.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Как отключить SELinux на Ubuntu, CentOS, Debian и RHEL

Подробная инструкция по проверке, временной и постоянной деактивации SELinux на популярных Linux-дистрибутивах: Ubuntu, Debian, CentOS и RHEL. Объяснены способы через консоль и конфигурационные файлы.