Версия: 1.0.0
Дата: 2026-03-13
Фаза: операционный стандарт
Навигационное дерево:
МАРКА (Scania, Volvo...)
└── МОДЕЛЬ (Scania 6 серия, Volvo FH IV...)
└── СИСТЕМА (Двигатель, Трансмиссия...)
└── УЗЕЛ (Форсунка, Турбина, ТНВД...)
└── ДЕТАЛЬ (карточка по OEM)
└── ТОВАР (SKU — конкретная позиция с ценой/остатком)
Ключевые термины:
- Деталь — карточка товара, идентифицируется по OEM-номеру. Одна деталь = одна страница на сайте.
- Товар (SKU) — конкретная позиция на складе: деталь + производитель + цена + остаток. Одна деталь может иметь несколько SKU (разные производители запчасти).
Таксономия (что это за деталь):
СИСТЕМА (8 штук — верхний уровень: Двигатель, Трансмиссия...)
└── УЗЕЛ (61 штука — средний уровень: Форсунка, ТНВД...)
└── ДЕТАЛЬ (карточка по OEM — нижний уровень)
Совместимость (для каких грузовиков):
МАРКА → МОДЕЛЬ ↔ ДЕТАЛЬ (M:N — одна деталь подходит ко многим моделям)
Совместимость определяется по полной иерархии (Марка → Модель → Система → Узел → Деталь).
Платформенная совместимость действует с исключениями на уровне системы:
| Пример | Совместимо | Исключение (система) |
|---|---|---|
| Volvo FH4 + Renault T | Двигатель, Трансмиссия, Шасси, Электрика | ❌ Кабина |
| Scania 5 + Scania 6 | Двигатель (DC13), часть Шасси | ❌ Кабина, ❌ часть Трансмиссии |
| Iveco Stralis + S-Way | Двигатель (Cursor), Шасси | ❌ Кабина |
Правило: при добавлении платформенной совместимости всегда указывать исключённые системы.
URL объединяет навигацию и таксономию:
/zapchasti/{marka}/{model}/{sistema}/{uzel}/{nazvanie}-{oem}/
Отвечает на два вопроса: для кого (марка/модель) и что это (система/узел).
mercedes-benz, man, volvo)код, seo_slug, url_slug, canonical_model, годы_от, годы_до, платформа_кодПолная таблица: it/data/references/MODELS_ALL.csv
8 систем, зафиксированы жёстко. Новые системы требуют пересмотра всей таксономии.
| Slug | Название | Пример узлов |
|---|---|---|
dvigatel |
Двигатель | Топливная система, Смазочная система, Охлаждение |
transmissiya |
Трансмиссия | КПП, Сцепление, Кардан |
kabina |
Кабина | Двери, Стёкла, Сиденья |
shassi |
Шасси | Рама, Подвеска, Рулевое, Тормоза |
elektrika |
Электрика | Генератор, Стартер, Фары |
v-sbore |
В сборе | Турбокомпрессоры, Радиаторы |
specoborudovanie |
Спецоборудование | ВОМ, Гидравлика |
krepchoz |
Крепёж | Болты, Гайки, Хомуты |
61 узел, каждый привязан к одной системе. Узел = группа деталей одного функционального назначения.
toplivny-nasos-vd, forsunka, toplivny-filtr)Полная таблица: it/data/references/TAXONOMY.csv
Карточка товара — основная SEO-единица каталога. Одна деталь = одна страница = один canonical URL.
Идентифицируется по OEM-номеру. Не зависит от поставщика или производителя запчасти.
Обязательные поля:
- Название (canonical, по правилам именования)
- OEM-номер (эталонный)
- Система + Узел
- Совместимые модели (минимум одна)
Конкретная позиция на складе. Привязан к карточке детали. Один SKU = один поставщик/производитель + цена + остаток.
Одна деталь может иметь несколько SKU:
- "Форсунка 2031835" от производителя Bosch — SKU-001, 12 500 руб, 5 шт
- "Форсунка 2031835" от производителя Delphi — SKU-002, 9 800 руб, 2 шт
На карточке детали показываются все доступные SKU с выбором варианта.
Номер детали от производителя грузовика (не производителя запчасти).
Пример: Scania присвоила форсунке номер 2031835 — это OEM Scania.
Тот же физический товар, но под другим OEM-номером. Два типа:
| Тип | Что это | Пример |
|---|---|---|
| Supersession | Производитель заменил свой старый номер новым | Scania 1874814 → 2082819 |
| Cross-brand | Деталь одинакова для двух марок грузовиков | Volvo 742xxxxx = Renault DTI-xxxxx |
Кросс-номера хранятся в поле oem_crosses карточки детали.
При поиске по любому кросс-номеру → находим основную карточку.
Другой физический товар, который выполняет ту же функцию, но не идентичен оригиналу.
Пример: неоригинальная форсунка от Bosch вместо оригинальной Scania — это аналог.
аналоги (рекомендации на карточке)Итого: три разных понятия:
OEM = оригинальный номер — главный идентификатор карточки
Кросс = тот же товар, другой номер → одна карточка
Аналог = похожий товар, другая деталь → отдельная карточка
Внутренний номер склада. Используется в 1С и при импорте. Не используется в URL.
Один артикул = один SKU (производитель + цена + остаток) на карточке детали.
| Поле | Тип | Пример | Примечание |
|---|---|---|---|
название |
строка | "Форсунка топливная" | по правилам NAMING_RULES.md |
oem |
строка | 2031835 |
эталонный OEM (один, canonical) |
oem_crosses |
список | 1874814, 1529018 |
только кросс-номера (без canonical OEM) |
система |
taxonomy | dvigatel |
один из 8 |
узел |
taxonomy | forsunka |
один из 61 |
модели |
M:N | [4-FH, 4-FM] |
список кодов из MODELS_ALL |
slug |
строка | forsunka-toplivnaya-2031835 |
{nazvanie}-{oem} |
| Поле | Тип | Примечание |
|---|---|---|
вес |
decimal | кг |
габариты |
string | "200×150×80 мм" |
описание |
text | текстовое описание |
| Поле | Тип | Примечание |
|---|---|---|
артикул (SKU) |
строка | внутренний номер склада/1С |
производитель |
string | бренд запчасти (Bosch, Delphi...) |
страна |
string | страна производства |
цена |
decimal | розничная, руб |
цена_опт |
decimal | для B2B клиентов |
остаток |
integer | штук на складе |
склад |
enum | основной / под заказ |
срок_поставки |
string | "1-3 дня" |
гарантия |
string | "12 месяцев" |
| Правило | Требование |
|---|---|
| Формат | JPG, WebP |
| Размер | 800×800 px минимум |
| Фон | белый или нейтральный |
| Количество | минимум 1, рекомендуется 3+ |
| Имя файла | {oem}-1.jpg, {oem}-2.jpg |
| Поле | Шаблон |
|---|---|
title |
{Название} {OEM} для {Модель} — купить в Москве |
description |
{Название} OEM {OEM} для {Марка} {Модель}. ✓ В наличии. Цена {Цена} руб. Доставка по РФ. |
canonical_url |
см. раздел Д |
Один физический товар может иметь несколько действующих OEM-номеров:
- Исходный OEM производителя (например, 1874814)
- Новый OEM после supersession (например, 2082819)
- Кросс-номер от другого завода (например, 2031835 для Renault той же детали)
Правило: одна карточка товара — один canonical OEM в URL.
Приоритет выбора canonical OEM:
1. Самый новый (актуальный) OEM производителя грузовика
2. Если равнозначны — OEM с наибольшим поисковым спросом
3. Если неизвестно — более короткий номер (легче набрать)
| Ситуация | Решение |
|---|---|
| Старый OEM заменён новым | Canonical = новый, старый в oem_crosses |
| Volvo + Renault T (одна деталь) | Canonical = Volvo OEM (742xxxxx), Renault как кросс |
| MB MP4 + MP5 (одна деталь) | Canonical = актуальный (MP5 если одинаково) |
Принцип: мы не дублируем карточки. Один физический товар = одна страница Drupal.
Если товар подходит к нескольким моделям из разных веток URL:
- Карточка товара имеет один canonical URL
- В других ветках навигации — ссылки на эту карточку (не копии)
- SEO-атрибут rel=canonical указывает на один и тот же URL
Пример: форсунка подходит к Scania 5 серии, Volvo FH IV, Renault T.
Canonical URL: /zapchasti/scania/5/dvigatel/forsunka/forsunka-toplivnaya-2031835/
↑ здесь живёт карточка товара (с canonical)
В навигации Volvo:
/zapchasti/volvo/fh3/dvigatel/forsunka/ — листинг содержит ссылку на эту карточку
→ ссылка ведёт на canonical URL (не копию)
Если OEM один у Scania + Volvo → ANY URL:
/zapchasti/scania/any/dvigatel/forsunka/forsunka-toplivnaya-2031835/
→ rel=canonical = /zapchasti/scania/any/...
→ страница модели Volvo ссылается на этот any-URL
Условие: один OEM + совместим с 2+ моделями одного бренда.
Пример: OEM 2031835 подходит к Scania 5-R и Scania 6-R
→ Canonical URL: /zapchasti/scania/any/dvigatel/forsunka/forsunka-2031835/
→ Страница /scania/5/dvigatel/forsunka/ → ссылка на any-URL
→ Страница /scania/6/dvigatel/forsunka/ → ссылка на any-URL
Если OEM подходит к Scania И Volvo — это две отдельные страницы, не any:
/zapchasti/scania/any/dvigatel/forsunka/forsunka-2031835/ ← Scania canonical
→ В карточке: "Также подходит к Volvo FH III" (текстовая ссылка)
→ Volvo страница ссылается на эту карточку
Все OEM (включая устаревшие) должны быть в поиске по сайту:
- Поиск по 1874814 → находит карточку с canonical OEM 2082819
- В карточке: "Заменён: 1874814 → 2082819" (информация для пользователя)
Принцип: показываем совместимость только если она подтверждена на 100%. Вероятная, приблизительная, экспертная совместимость — не показывается. Лучше «уточните» чем неверное «подходит».
ШАГ 1: Есть прямое подтверждение источника 100%?
(TecDoc / TEXA / официальный прайс с конкретной моделью)
↓ ДА ↓ НЕТ
100% совместимо ШАГ 2: Система → Правило
→ добавить в список ↓
ШАГ 3: Правило → Группа
↓
ШАГ 4: Есть ли исключения/флаги?
↓ НЕТ ↓ ДА
100% совместимо → "Уточните"
→ добавить в список (не показывать)
ШАГ 2 — Система → Правило
| Система детали | Правило |
|---|---|
| Крепёж / * | UNIVERSAL — все модели без исключений |
| Кабина / * | CABIN — строго по группе кабины |
| Двигатель / * | ENGINE — строго по семейству двигателя |
| В сборе / Агрегаты | ENGINE — по двигателю |
| В сборе / Кузов | CABIN — по кабине |
| Трансмиссия / * | PLATFORM — по платформенной группе |
| Шасси / * | PLATFORM — по платформенной группе |
| Электрика / Датчики | PLATFORM — по платформенной группе |
| Электрика / Блоки CAN | PLATFORM — но только внутри поколения |
| Спецоборудование / * | PLATFORM — по платформенной группе |
ШАГ 3 — Правило + Модель → Группа (из COMPATIBILITY_GROUPS.csv)
| Правило | Ключ | Пример |
|---|---|---|
| PLATFORM | платформенная группа модели | Volvo FH4 → GRP-VOL-E6-RNL |
| ENGINE | семейство двигателя модели | Volvo FH4 → GRP-ENG-D13K |
| CABIN | тип кабины модели | Volvo FH4 → GRP-CAB-VOL-FH |
| UNIVERSAL | — | все модели |
ШАГ 4 — Проверка флагов неопределённости
Если у детали или модели есть хотя бы один флаг из таблицы ниже → совместимость НЕ утверждать, показать «уточните».
| Флаг | Модели/ситуации с флагом |
|---|---|
| Двигатель неоднороден (несколько семейств) | MB MP3 (OM501 или OM471 — зависит от года) |
| Конфигурация двигателя неизвестна | Scania P с DC9 или DC13 (зависит от заказа) |
| Платформа частична (только некоторые узлы) | MAN TGA + TGS/TGX I (только ZF + Wabco, не CAN) |
| Группа не определена | любая модель без group_id в MODELS_ALL.csv |
| Кабина не выделена в отдельную группу | MB MP4/MP5 (GRP-CAB отсутствует — TODO) |
→ Флаги хранятся в поле flags в MODELS_ALL.csv и COMPATIBILITY_GROUPS.csv.
Пример работы алгоритма:
Форсунка двигателя, данные от TecDoc: "Volvo FH4 2013-2020"
ШАГ 1: источник = TecDoc → 100%
→ Совместима: Volvo FH4 ✓ (показываем зелёным)
Форсунка двигателя, в прайсе только "Scania"
ШАГ 1: нет конкретной модели → переходим
ШАГ 2: Двигатель → ENGINE
ШАГ 3: нет модели → группа не определена → ФЛАГ
ШАГ 4: флаг → "уточните совместимость" (не показываем моделей)
Стекло кабины, прайс: "Volvo FH IV (4-FH)"
ШАГ 1: источник = прайс с моделью → 100%
→ Совместима: Volvo FH4 ✓
Дополнительно: ШАГ 2→CABIN → GRP-CAB-VOL-FH (FH2, FH3, FH4)
ШАГ 4: флагов нет → добавить весь GRP-CAB-VOL-FH
Деталь двигателя, прайс: "MB Actros MP3"
ШАГ 1: источник = прайс с моделью → переходим к ШАГ 4
ШАГ 4: MB MP3 → флаг "Двигатель неоднороден (OM501/OM471)"
→ "Уточните год выпуска" (не показываем зелёную галочку)
Правило: если совместимость не прошла все шаги без флагов → НЕ показывать как «подходит». Неверная «подходит» хуже чем «уточните».
Полные группы: COMPATIBILITY_MATRIX.md
Связь: одна деталь может подходить ко многим моделям, одна модель имеет много деталей.
Хранится в Drupal как field_compatible_models (entity reference).
Два уровня: достаточно для 100% и недостаточно.
Достаточно для утверждения совместимости:
| Источник | Использование |
|---|---|
| TecDoc / TEXA (официальный каталог производителя) | Добавлять напрямую, флагов нет |
| Официальный прайс поставщика с конкретной моделью | Добавлять, проверить флаги модели |
| Верифицированные группы из COMPATIBILITY_GROUPS.csv (без TODO, без флагов) | Расширять на всю группу |
Недостаточно — не использовать для утверждения:
| Источник | Почему недостаточно |
|---|---|
| Прайс с только маркой без модели ("Scania") | Неизвестно какое поколение |
| Экспертная оценка механика ("ставили, встаёт") | Не является подтверждением совместимости |
| Логическое умозаключение ("похоже на ту же платформу") | Может содержать неизвестные исключения |
| Группы из COMPATIBILITY_GROUPS.csv с пометкой TODO | Не верифицированы |
Детальная система: COMPATIBILITY_MATRIX.md — 3 правила (PLATFORM/ENGINE/CABIN) × 25 групп
Каждая деталь получает тип совместимости в зависимости от системы/узла:
| Правило | Системы | Значит |
|---|---|---|
| PLATFORM | Трансмиссия, Шасси, Пневматика | Вся платформенная группа |
| ENGINE | Двигатель, В сборе/агрегаты | Семейство двигателей |
| CABIN | Кабина | Только эта кабина |
| UNIVERSAL | Крепёж, расходники | Любая модель |
Совместимость платформ не глобальная — она определяется с исключениями на уровне системы.
| Платформа | Совместимые системы | Исключения |
|---|---|---|
| Volvo FH4 + Renault T (2013+) | Двигатель, Трансмиссия, Шасси, Электрика | ❌ Кабина |
| Scania 5 + Scania 6 | Двигатель (DC13), Электрика, часть Шасси | ❌ Кабина, ❌ NXT-компоненты |
| Mercedes MP4 + MP5 | Двигатель (OM471), Шасси | ❌ Кабина, ⚠️ AdBlue-система |
| Mercedes MP2 + MP3 | Трансмиссия, Шасси | ❌ Кабина, ❌ Двигатель (OM501≠OM471) |
| Iveco Stralis + S-Way | Двигатель (Cursor), Трансмиссия, Шасси | ❌ Кабина |
| Iveco Stralis + Trakker | Двигатель, Трансмиссия, Шасси | ❌ Кабина |
| MAN TGA + TGS/TGX I | Двигатель (D26), Трансмиссия (ZF) | ❌ Кабина, ❌ CAN-шина |
Правило при добавлении товара:
- Только системы из колонки «Совместимые системы» расширяются на смежную модель
- Системы из колонки «Исключения» — не расширяются, остаются строго по одной модели
- При добавлении Volvo FH4 → автоматически расширить на Renault T только для Двигатель/Трансмиссия/Шасси/Электрика (не Кабина)
- Если есть сомнение в границах → не расширять, оставить «уточните»
Правило отображения: показываем зелёный только если совместимость прошла алгоритм Г1 без флагов. В остальных случаях — жёлтый «уточните».
| Сигнал | Цвет | Условие |
|---|---|---|
| "✓ Подходит для {Модель}" | зелёный | модель прошла алгоритм Г1 → 100% подтверждено |
| "✗ Не подходит для {Модель}" | красный | пользователь выбрал модель, её нет в списке совместимых |
| "⚠ Уточните совместимость" | жёлтый | пользователь не выбрал модель ИЛИ список совместимости пуст |
| "⚠ Уточните год выпуска" | жёлтый | модель в списке, но у неё флаг неоднородного двигателя (MB MP3) |
| "⚠ Уточните конфигурацию" | жёлтый | модель в списке, но у неё флаг нескольких двигателей (Scania P) |
Что НЕ показываем:
- Никогда не показываем зелёный на основании только марки без модели
- Никогда не показываем зелёный для моделей с флагами неопределённости
- Никогда не показываем «вероятно подходит» или «возможно совместимо» — только 100% или уточнить
Детали без привязки к конкретной модели (хомуты, крепёж, масло, жидкости):
- Поле модели = пустое или ["any"]
- URL: /zapchasti/universal/krepchoz/{nazvanie}-{oem}/
- Совместимость на карточке: "Универсальная деталь"
Уровень 0: / ← Главная
Уровень 1: /zapchasti/ ← Каталог (навигатор)
Уровень 2: /zapchasti/{marka}/ ← Марка (навигатор)
Уровень 3: /zapchasti/{marka}/{model}/ ← Модель (навигатор)
Уровень 4: /zapchasti/{marka}/{model}/{sistema}/ ← Система (навигатор)
Уровень 5: /zapchasti/{marka}/{model}/{sistema}/{uzel}/ ← Узел (листинг)
Уровень 6: /zapchasti/{marka}/{model}/{sistema}/{uzel}/{nazvanie}-{oem}/ ← Товар
Специальные URL:
ANY-листинг: /zapchasti/{marka}/any/{sistema}/{uzel}/
ANY-товар: /zapchasti/{marka}/any/{sistema}/{uzel}/{nazvanie}-{oem}/
Alias-модель: /zapchasti/{marka}/{alias-model}/ → 301 → /{canonical-model}/
| Элемент | Правило | Пример |
|---|---|---|
{marka} |
строчный транслит | scania, mercedes-benz |
{model} |
url_slug из MODELS_ALL | 6, fh4, mp4 |
{sistema} |
slug системы | dvigatel, transmissiya |
{uzel} |
slug узла | forsunka, toplivny-nasos-vd |
{nazvanie} |
транслит названия товара | forsunka-toplivnaya |
{oem} |
OEM как есть (цифры/буквы) | 2031835, a0070170021 |
Длина URL: максимум 115 символов (рекомендация поисковиков).
Средняя длина URL товара в проекте: ~85 символов — укладываемся.
Canonical страница (имеет собственную SEO-страницу):
- Имеет 10+ товаров
- canonical_model в MODELS_ALL = пустой (сама является canonical)
Alias (301 redirect на canonical):
- Менее 10 товаров
- Другая буква кузова той же платформы (например, Scania G6 → Scania R6)
- Поле canonical_model заполнено кодом canonical
Отдельная страница для alias (SEO alias):
- 10+ товаров, но та же платформа
- Создаётся страница с rel=canonical → canonical URL
- Пример: Scania G6 (906 товаров) — своя страница /scania/g6/, canonical = /scania/6/
| Ситуация | Действие |
|---|---|
| Alias-модель с <10 товаров | 301 → canonical модель |
| OEM изменился (supersession) | 301 со старого URL → новый URL |
| Старый сайт (CS-Cart) | 301 на новый URL |
| Узел переименован | 301 со старого slug → новый |
Правило цепочек: максимум 2 хопа. Если старый OEM → новый OEM → ещё новее → нужно выпрямить цепочку до 1 хопа.
Шаг 1: Определить новый canonical OEM
Шаг 2: Обновить поле oem в товаре → новый OEM
Шаг 3: Добавить старый OEM в oem_crosses
Шаг 4: Создать 301: /.../{nazvanie}-{старый-oem}/ → /.../{nazvanie}-{новый-oem}/
Шаг 5: Обновить sitemap.xml
Шаг 6: Проверить цепочки (нет ли двойного хопа)
На каждой странице:
Главная > Запчасти > Scania > Scania 6 серия > Двигатель > Форсунка > [Название товара]
Структура десктоп мега-меню:
[Марка] [Система] [Популярное]
Scania Двигатель Форсунки Scania
Volvo Трансмиссия Турбины Volvo
Mercedes Кабина ТНВД Scania
MAN Шасси → Все популярные
DAF Электрика
Renault В сборе
Тип страниц: главная каталога, марка, модель, система.
Обязательные блоки навигатора:
1. Hero — название, описание 150-200 слов (уникальный SEO-текст)
2. Навигация вглубь — карточки следующего уровня (с количеством товаров)
3. Листинг "В сборе" — крупные карточки (фото + цена + "В наличии")
4. Листинг "Распродажа" — строчный формат (экономит место, много товаров)
5. Листинг "Популярное" — сетка 3-4 колонки
6. SEO-блок — расширенное описание, FAQ (скрыт кнопкой "читать далее")
Тип страниц: узел /scania/6/dvigatel/forsunka/.
Обязательные блоки:
1. Фильтры (сайдбар): марка, модель, цена, наличие
2. Счётчик: "Найдено: 47 форсунок для Scania 6 серии"
3. Сортировка: по цене (↑↓), по наличию, по популярности
4. Листинг: сетка 3 колонки (фото, название, OEM, цена, кнопка)
5. Пагинация: кнопка "Загрузить ещё" (без перезагрузки страницы)
Обязательные блоки:
1. Галерея — фото (минимум 1)
2. Идентификация — Название, OEM, кросс-номера, Артикул
3. Цена и кнопки — Цена, "В корзину", "Купить в 1 клик"
4. Совместимость — зелёный/красный/жёлтый блок (см. Г4)
5. Технические характеристики — вес, габариты, производитель, гарантия
6. Описание — текстовое описание товара
7. "Смотрят также" — похожие товары (тот же узел, другие модели)
<title>...</title> <!-- уникальный для каждой страницы -->
<meta name="description" content="..."> <!-- уникальный -->
<link rel="canonical" href="..."> <!-- ОБЯЗАТЕЛЬНО -->
<meta name="robots" content="index,follow"> <!-- для всех SEO-страниц -->
Страницы без индексации (noindex):
- Корзина, профиль, страницы поиска
- Alias-модели с <10 товаров (только 301, не noindex)
- Фильтрованные URL с параметрами (?sort=price)
| Тип страницы | Шаблон |
|---|---|
| Марка | Запчасти {Марка} — купить в Москве |
| Модель | Запчасти {Марка} {Модель} — {N} товаров в наличии |
| Система | {Система} {Марка} {Модель} — каталог запчастей |
| Узел (листинг) | {Узел} для {Марка} {Модель} — {N} товаров, цены |
| Товар (canonical) | {Название} {OEM} для {Марка} {Модель} — цена, наличие |
| ANY-товар | {Название} {OEM} для {Марка} — цена, наличие |
Максимум: 65 символов для title, 155 для description.
Страница товара (Product):
{
"@type": "Product",
"name": "Форсунка топливная",
"sku": "SKU-12345",
"mpn": "2031835",
"offers": {
"@type": "Offer",
"price": "12500",
"priceCurrency": "RUB",
"availability": "InStock"
}
}
Хлебные крошки (BreadcrumbList): на всех страницах.
Листинг (ItemList): на страницах узла.
Canonical у Яндекса = директива (обязательная к исполнению, не подсказка).
| Правило | Яндекс |
|---|---|
rel=canonical |
строго соблюдает, не индексирует alias |
| Дубли страниц | жёстко наказывает, обязательно ставить canonical |
| Alias-модели | либо 301, либо canonical на основную |
| Тонкий контент | фильтр АГС — минимум 150 слов уникального текста |
| Скорость | PageSpeed 60+ обязательно для нормального ранжирования |
Яндекс.Вебмастер — товарный граф (Маркет):
- Price: актуальная цена в рублях
- Availability: InStock / OutOfStock
- Condition: NewCondition
- Обновление: при изменении цены/остатков (не реже 1 раза в сутки)
Турбо-страницы (опционально для мобильного):
- Яндекс рекомендует для карточек товаров
- Ускоряет загрузку на мобильных
- Реализация через Яндекс Вебмастер + RSS-фид
Canonical у Google = рекомендация (может проигнорировать если сигналы слабые).
| Правило | |
|---|---|
rel=canonical |
сигнал, не директива — нужны дополнительные сигналы |
| Внутренние ссылки | должны вести на canonical URL (не alias) |
| Sitemap | только canonical URL в sitemap |
| Core Web Vitals | LCP < 2.5s, FID < 100ms, CLS < 0.1 |
Google Search Console (обязательно):
- Подключить домен
- Загрузить sitemap.xml
- Мониторить индексацию после запуска
Structured Data (обязательно для Google Shopping):
- Product + Offer + Availability
- Review (если есть отзывы)
Меньший приоритет, но отдельные правила:
| Правило | Bing |
|---|---|
rel=canonical |
соблюдает, аналогично Яндексу |
| IndexNow | поддерживает быструю индексацию — использовать при обновлениях |
| Schema.org | важен для Bing Shopping |
Общее правило: делаем сайт правильно для Яндекса (строже) — Google и Bing получают автоматически.
index,follow/sitemap-products.xml, /sitemap-catalog.xml, /sitemap-index.xml<priority>0.8</priority>User-agent: *
Disallow: /cart/
Disallow: /user/
Disallow: /search?
Disallow: /admin/
Allow: /zapchasti/
Sitemap: https://lideravto.ru/sitemap-index.xml
1. ПОЛУЧИТЬ данные от поставщика (прайс, описание, OEM)
2. ПРОВЕРИТЬ OEM:
- Уже есть в каталоге? → обновить, не создавать дубль
- OEM заменён? → найти актуальный через TecDoc или данные поставщика (не parts_dictionary — он для названий, не OEM)
3. ОПРЕДЕЛИТЬ систему и узел:
- По parts_dictionary.csv → canonical name → система + узел
- Если нет → определить вручную → добавить в словарь
4. ОПРЕДЕЛИТЬ совместимость:
- Какие модели грузовиков? → из прайса или TecDoc
- Проверить платформы → добавить смежные если нужно
5. ОПРЕДЕЛИТЬ URL:
- 1 модель → /zapchasti/{marka}/{model}/{sistema}/{uzel}/{nazvanie}-{oem}/
- 2+ модели одного бренда → /zapchasti/{marka}/any/{sistema}/{uzel}/{nazvanie}-{oem}/
- 2+ брендов → выбрать один canonical бренд, в других — ссылки
6. СОЗДАТЬ товар в Drupal:
- Заполнить все обязательные поля
- Добавить фото
- Проверить title и description (автогенерация)
7. ПРОВЕРИТЬ после сохранения:
- URL корректный?
- canonical правильный?
- Появился в листинге?
1. Добавить строку в MODELS_ALL.csv:
- Заполнить все поля (марка, код, seo_slug, url_slug, годы, платформа)
- Определить canonical_model (или пусто если сама canonical)
2. Если canonical: создать страницу в Drupal
3. Если alias с 301: настроить редирект
4. Если SEO alias: создать страницу с rel=canonical
5. Обновить мега-меню (если показывать_меню = да)
6. Обновить BRAND_COMPATIBILITY.md если новая платформа
1. Согласовать название (canonical name) по NAMING_RULES.md
2. Определить систему (один из 8)
3. Добавить в TAXONOMY.csv: система, название, slug
4. Добавить в parts_dictionary.csv: маппинги вариантов названий → canonical
5. Создать taxonomy term в Drupal
6. SEO-страница узла создаётся автоматически при появлении первого товара
Источник: прайс-лист поставщика (CSV/Excel)
Частота: ежедневно (автоматически) или по запросу
Алгоритм:
1. Загрузить прайс в /mnt/beget-s3/lideravto/inbox/
2. Запустить: drush lider:update-prices --file=prais.csv
3. Проверить: log/prices-YYYY-MM-DD.log
4. Обновление Schema.org Offer = автоматически при сохранении
1. Получить информацию о замене: старый OEM → новый OEM
2. Найти товар по старому OEM в Drupal
3. Обновить поле oem → новый OEM
4. Добавить старый OEM в oem_crosses
5. Создать 301: /.../{nazvanie}-{старый}/ → /.../{nazvanie}-{новый}/
6. Проверить цепочки (нет ли тройного хопа)
7. Обновить sitemap.xml
8. Уведомить Google/Яндекс через IndexNow
Ситуация: обнаружили два товара с разными OEM, но это один физический товар.
1. Определить canonical OEM (по правилам В2)
2. Перенести все поля из дубля в основной (добавить OEM в кросс-номера)
3. Настроить 301: URL дубля → URL основного
4. Удалить/архивировать дубль (не физически удалять — историю сохраняем)
5. Проверить внутренние ссылки (если где-то ссылались на дубль)
НЕ УДАЛЯТЬ товар — только архивировать:
1. Установить остаток = 0
2. Установить статус = "Архив"
3. Страница остаётся (SEO не теряем)
4. На странице: "Товар снят с производства. Возможные аналоги:"
5. Добавить ссылки на аналоги из того же узла
6. Sitemap: убрать из основного sitemap, добавить в архивный
Минимальные колонки для импорта:
oem;название;цена;остаток;модели
2031835;Форсунка топливная;12500;5;Scania 5-R,Scania 6-R
Расширенный формат (предпочтительный):
oem;название;цена;остаток;модели;производитель;вес;гарантия
Кодировка: UTF-8. Разделитель: ; (точка с запятой).
Файл: it/lider-drupal/data/parts_dictionary.csv
Содержит: bazon_name → canonical_name → система → узел
При импорте: название из прайса → lookup в словаре → система + узел.
Если нет совпадения → товар попадает в очередь ручной обработки.
1. Найти товар по OEM (первичный ключ)
2. Если найден → обновить цену/остаток/производителя
3. Если не найден → проверить oem_crosses
4. Если нашли через кросс → обновить (не создавать новый)
5. Если нигде не нашли → создать новый
# Импорт каталога из CSV
drush lider:import-products --file=catalog.csv --dry-run # preview
drush lider:import-products --file=catalog.csv # реальный импорт
# Импорт таксономии
drush lider:import-taxonomy --file=taxonomy.csv
# Импорт моделей грузовиков
drush lider:import-models --file=models.csv
# Обновление цен
drush lider:update-prices --file=prices.csv
# Пересчёт canonical/any URLs
drush lider:rebuild-urls
Проверить:
□ Количество импортированных записей (лог)
□ Количество ошибок (лог)
□ Несколько случайных товаров — URL правильный?
□ Фильтрация в листинге работает?
□ Поиск находит новые OEM?
□ Canonical теги проставлены?
# Дубли OEM
drush lider:check-duplicates
# Товары без фото
drush lider:report --filter=no-photo
# Товары без совместимости
drush lider:report --filter=no-models
# Broken URLs (404)
drush lider:check-urls
# Цепочки редиректов >2 хопов
drush lider:check-redirects
| Метрика | Цель | Команда |
|---|---|---|
| Всего товаров | — | drush lider:stats |
| С фото | >90% | drush lider:stats |
| С совместимостью | >95% | drush lider:stats |
| Дублей OEM | 0 | drush lider:check-duplicates |
| Broken 301 | 0 | drush lider:check-redirects |
| Цепочки 3+ хопов | 0 | drush lider:check-redirects |
При добавлении нового типа деталей в каталог:
1. Добавить новый узел в TAXONOMY.csv
2. Добавить маппинги в parts_dictionary.csv
3. Запустить drush lider:rebuild-taxonomy
4. Перепроверить товары в очереди ручной обработки
Зафиксированы slug и названия для актуальных и перспективных моделей,
добавленных в MODELS_ALL.csv в марте 2026. Товаров пока нет — строки резервируют URL.
| Марка | Код | URL | Полное название | С года | Совместимость |
|---|---|---|---|---|---|
| Scania | Super | /scania/super/ |
Scania Super (2023–н.в.) | 2023 | Кабина ≈ 6 серия NXT; двигатель SC13 — новый |
| Volvo | 5-FH | /volvo/fh5/ |
Volvo FH V (2021–н.в.) | 2021 | Двигатель D13K/D16K ≈ FH4; кабина — другая |
| MAN | 3-TGX | /man/tgx-3/ |
MAN TGX III (2020–н.в.) | 2020 | Новое поколение после TGX II |
| Iveco | S-Way | /iveco/s-way/ |
Iveco S-Way (2019–н.в.) | 2019 | Шасси и двигатели ≈ Stralis |
| DAF | XG | /daf/xg/ |
DAF XG/XG+ (2021–н.в.) | 2021 | Новая платформа, несовместима с XF106 |
| Ситуация | Правило | Пример |
|---|---|---|
| Новое поколение линейки | добавить номер поколения | fh4 → fh5 |
| Полностью новая модель | slug по названию модели | s-way, xg, super |
| Год в названии | не использовать в slug | ~~fh-2021~~ |
| Ситуация | Платформа | Кросс-платформа |
|---|---|---|
| Новая платформа без преемственности | новый код DAF-XG |
— |
| Новая кабина, старый двигатель | новый код VOL-FH5 |
VOL-E6 (FH4) |
| Новый двигатель, старая кабина | новый код SCN-SUPER |
SCN-NXT (6 серия) |
| Документ | Назначение |
|---|---|
| SITE_STRUCTURE.md | URL-схема, SEO-шаблоны, типы страниц |
| COMPATIBILITY_MATRIX.md | ⭐ Матрица совместимости: 3 правила (PLATFORM/ENGINE/CABIN) |
| BRAND_COMPATIBILITY.md | Платформенная совместимость брендов |
| NAMING_RULES.md | Правила именования деталей |
| TAXONOMY.csv | Эталон таксономии (8 систем, 61 узел) — it/data/references/ |
| MODELS_ALL.csv | Модели грузовиков (canonical/alias) — it/data/references/ |
| parts_dictionary.csv | Словарь названий деталей — it/lider-drupal/data/ |
| IMPORT_ALGORITHM.md | Детальный алгоритм импортёра |
Версия: 1.0.0
Дата: 2026-03-13