Разработка системы управления SEO-данными (meta, OG) сайта

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка системы управления SEO-данными (meta, OG) сайта
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Разработка системы управления SEO-данными (meta, OG) сайта

Система управления SEO-данными позволяет редакторам задавать мета-теги для каждой страницы сайта — title, description, Open Graph, Twitter Card — без правок в коде. Критична для новостных сайтов, интернет-магазинов и корпоративных порталов.

Модель данных

seo_metas (
  id, seo_type, seo_id,  -- полиморфная связь: Article, Product, Category, Page
  title, description, keywords,
  og_title, og_description, og_image_url,
  twitter_title, twitter_description, twitter_image_url, twitter_card,
  robots,           -- 'index,follow' | 'noindex,nofollow' | custom
  canonical_url,    -- override автоматического canonical
  schema_type,      -- тип для JSON-LD
  schema_data (jsonb),
  created_at, updated_at
)

Трейт для моделей

trait HasSeoMeta
{
    public function seoMeta(): MorphOne
    {
        return $this->morphOne(SeoMeta::class, 'seo');
    }

    public function getEffectiveSeoTitle(): string
    {
        return $this->seoMeta?->title
            ?? $this->getDefaultSeoTitle()
            ?? config('seo.site_name');
    }

    public function getEffectiveSeoDescription(): string
    {
        return $this->seoMeta?->description
            ?? $this->getDefaultSeoDescription()
            ?? '';
    }
}

Компонент мета-тегов (Blade/React)

// Blade: layout.blade.php
<title>{{ $seo->title ?? config('seo.default_title') }}</title>
<meta name="description" content="{{ $seo->description ?? '' }}">
<meta name="robots" content="{{ $seo->robots ?? 'index,follow' }}">
@if($seo->canonical_url)
<link rel="canonical" href="{{ $seo->canonical_url }}">
@endif

<meta property="og:title"       content="{{ $seo->og_title ?? $seo->title }}">
<meta property="og:description" content="{{ $seo->og_description ?? $seo->description }}">
<meta property="og:image"       content="{{ $seo->og_image_url ?? config('seo.default_og_image') }}">
<meta property="og:type"        content="website">
<meta property="og:url"         content="{{ request()->url() }}">

<meta name="twitter:card"        content="{{ $seo->twitter_card ?? 'summary_large_image' }}">
<meta name="twitter:title"       content="{{ $seo->twitter_title ?? $seo->og_title ?? $seo->title }}">
<meta name="twitter:description" content="{{ $seo->twitter_description ?? $seo->og_description }}">
<meta name="twitter:image"       content="{{ $seo->twitter_image_url ?? $seo->og_image_url }}">

Шаблоны мета-тегов

Для страниц без ручных настроек — автоматическая генерация из шаблона:

// Для товаров
'{name} — купить за {price} ₽ | {site_name}'
'{description} Доставка по всей России.'

// Подстановка
$title = Str::of(config('seo.product_title_template'))
    ->replace('{name}',      $product->name)
    ->replace('{price}',     number_format($product->price / 100, 0, '.', ' '))
    ->replace('{site_name}', config('seo.site_name'))
    ->limit(60);

Форма редактирования в CMS

SEO-раздел в форме редактирования любой сущности — вкладка или accordion:

function SeoMetaForm({ data, onChange }) {
    return (
        <Accordion type="single" collapsible>
            <AccordionItem value="seo">
                <AccordionTrigger>SEO-настройки</AccordionTrigger>
                <AccordionContent>
                    <div className="space-y-4">
                        <div>
                            <Label>Title (рекомендуется 50-60 символов)</Label>
                            <Input value={data.title} onChange={e => onChange({ title: e.target.value })} />
                            <CharCounter current={data.title?.length} max={60} />
                        </div>
                        <div>
                            <Label>Description (рекомендуется 150-160 символов)</Label>
                            <Textarea value={data.description} onChange={e => onChange({ description: e.target.value })} />
                            <CharCounter current={data.description?.length} max={160} />
                        </div>
                        <SeoPreview title={data.title} description={data.description} />
                    </div>
                </AccordionContent>
            </AccordionItem>
        </Accordion>
    );
}

Компонент SeoPreview показывает, как страница будет выглядеть в результатах поиска Google.

Срок разработки: 2–3 дня для полной системы с полиморфными связями, шаблонами и формой редактирования.