Фильтр для интернет-магазина: чтобы покупатель дошел до товара в каталоге на тысячи позиций
Фильтр для интернет-магазина – это не модуль, а состояние характеристик товара. Сам модуль ставится в час, но работает только там, где атрибуты заполнены и названы одинаково в пределах категории, поэтому основная работа лежит в каталоге, а не в коде. Далее три вещи решают, дойдет ли покупатель до товара: счетчики у значений, поведение адресов при выборе параметров и поиск, который находит артикул в том виде, в каком его вводят. Измеренный нами магазин на 54 302 позиции отдает первый ответ за 413,8 мс.
Самый большой каталог с фильтрами, который мы мерили
54 302 товары и 635 категорий, TTFB 413,8 мс
Наш замер
Самый большой каталог с фильтрами, который мы мерили
54 302 товары и 635 категорий, TTFB 413,8 мс
Как считаем каталог
двумя методами – карта сайта и штатный поиск, расхождение 0,4%
Второй измеренный каталог
5 561 товар при TTFB 801,2 мс и легком HTML 153,8 КБ
Условия
предоплата 50%, гарантийный срок 30 календарных дней
Показатели сняты нашим замером на живых сайтах соответствующего масштаба.
после бесплатного аудита
Стоимость
30
Гарантия
дней после подписания акта
54 302
Самый большой каталог с фильтрами, который мы мерили
товары и 635 категорий, TTFB 413,8 мс
двумя методами – карта сайта и штатный поиск, расхождение 0,4%
Как считаем каталог
5 561
Второй измеренный каталог
товар при TTFB 801,2 мс и легком HTML 153,8 КБ
10–25
Срок
рабочих дней от утверждения структуры характеристик
2–4
Аудит каталога
рабочих дня, бесплатно, с документом на руки
предоплата 50%, гарантийный срок 30 календарных дней
Условия
Этапы работы
Прозрачные этапы с согласованием на каждом шагу
Общий срок:10–25 дней
1
Аудит каталога и словарь характеристик
1–3 рабочих дня
Считаем заполненность атрибутов по каждой большой категории, снимаем скорость категории до работ, собираем список значений с разногласиями в названиях. На выходе — перечень параметров, идущих в фильтр, и мешающих.
2
Приведение атрибутов в строй
3–8 рабочих дней
Свод названий параметров и единиц измерения, разбор характеристик из описаний, доливание значений из прайса. Самый длинный этап и единственный, продолжительность которого до аудита честно назвать невозможно — поэтому он всегда отдельной строчкой в смете.
3
Фасетный фильтр и правила адресов
2–5 рабочих дней
Отдельный набор фильтров под каждую большую категорию, счетчики с кэшированным подсчетом, страница пустой подсказки. Здесь же фиксируем, какие композиции параметров остаются открытыми для индексации, а какие закрываются.
4
Внутренний поиск
2–4 рабочих дня
Нормализация артикулов по обе стороны — уборка пробелов, дефисов и регистра, поиск по части названия, устойчивость к опечаткам, подсказки с переходом сразу в карточку. Подключаем сбор запросов, не давших результатов.
5
Скорость выборки
1–3 рабочих дня
Просмотр индексов базы под фактические запросы фильтра, кэш страниц категорий, повторные замеры первого ответа с несколькими активными параметрами. Сравним с цифрами, снятыми на первом этапе.
6
Прием и передача
1–2 рабочих дня
Проход сценариев с вашим менеджером: отбор по характеристикам, поиск по артикулу, пустая выборка. Передаем словарь характеристик – за ним каталог наполняется дальше без нас.
Технологии и интеграции
На чём строим и с чем это соединяется
Стек
OpenCart 4.x – ставим по умолчанию; ограничение: часть украинских модулей фильтрации до сих пор выходит только под 3.x
OpenCart 3.x – когда нужен модуль, сборки которого под 4.x нет
PHP – ограничение: скорость фильтра упирается не в язык, а в количество запросов, которые тема делает на страницу категории
MySQL с просмотренными индексами под выборки – ограничение: индекс ускоряет чтение и замедляет запись, поэтому отдельно меряем импорт прайса
OCFilter или аналог – дает фасетку из коробки; ограничение: правила индексации комбинаций он за вас не решает, это ручное решение
кэширование страниц категорий - ограничение: кэш нужно сбрасывать при смене остатков, иначе видно наличие вчерашнего дня
nginx и HTTP/2 – ограничение: они сокращают сетевую часть, а не время сбора страницы на стороне PHP
Интеграции
Google Tag Manager
GA4 с событиями поиска и применения фильтров
Google Search Console
внутренняя аналитика поисковых запросов
импорт характеристик из прайса
Что входит
Полный перечень работ и того, что вы получаете на выходе
Набор фильтров под каждую большую категорию — характеристики посуды и инструмента не должны быть в одном списке
Приведение атрибутов к единому виду в пределах категории: одно название параметра, одинаковые единицы измерения
Фасетный фильтр с корректным поведением адресов: индексируем только осмысленные комбинации, остальное закрываем
Счетчики в фильтре: покупатель видит, сколько позиций даст каждый параметр, и не попадает в пустую выборку
Внутренний поиск с нормализацией артикулов, поиском по части названия и устойчивостью к опечаткам
Подсказки в поиске с переходом на карту или категорию
Страница пустой выборки с предложением снять лишний фильтр, а не тупиком
Оптимизация запросов к базе и индексам, чтобы фильтр не тормозил на десятках тысяч позиций
Замеры до и после: первый ответ категории, время выборки с активными фильтрами
Аналитика поиска: что ищут и какие запросы не дают результатов
Условия: предоплата 50%, гарантийный срок 30 календарных дней после приемки
Когда эта услуга не подходит
Что не входит в работу — чтобы не было сюрпризов на сдаче
Заполнение характеристик товаров вручную сверх согласованного объема - это отдельная услуга
Переписка описаний товаров
Наружный поисковый двигатель с отдельной инфраструктурой без отдельной оценки
Реклама после запуска
Хостинг, домен, эквайринг
Кому подходит
Ситуации, в которых эта услуга даёт результат
Сценарий 1 из 5
Покупатели спрашивают менеджера о том, что должны отбирать сами
«Есть ключ на 17?», «а это под 220 или под 380?» - по десять таких сообщений в день. Это признак того, что параметр, по которому люди выбирают, на сайте не существует как отдельное поле. Фильтр переносит этот отбор в каталог. Список параметров мы берем именно из этих вопросов, а не из прайса.
Разберём вашу ситуацию на бесплатном аудите
Сценарий 2 из 5
Модуль фильтра стоит, но им почти не пользуются
Типичная причина — у половины карт атрибуты пустые, а у второй половины тот же параметр записан тремя способами: «40 Вт», «40 Вт.» и «мощность 40». Фильтр показывает три значения вместо одного, покупатель ему не верит и возвращается к пролистыванию. Исправляется это не в коде модуля, а в словаре характеристик по каждой категории.
Сценарий 3 из 5
Поиск по сайту не находит того, что есть в наличии
Покупатель вводит артикул без дефиса, в базе он с дефисом выдача пуста. Далее тот же человек идет туда, где поиск работает, и идет с уже сложившимся намерением купить. Это самый дорогой тип потери: человек знал, чего хочет, и вы за него уже заплатили рекламой.
Сценарий 4 из 5
Фасетка уже работает и начала плодить адреса
Каждая комбинация параметров создает свой адрес, и без правил каталог на несколько тысяч товаров способен сгенерировать сотни тысяч страниц-комбинаций. Мы встречали 33 493 записи карты сайта на 8 690 уникальных адресов еще до любой фасетки – с неуправляемым фильтром бот тратит обход на почти одинаковые страницы.
Сценарий 5 из 5
В одном магазине несколько разнородных групп.
Посуда, инструмент и химия в одном каталоге не могут иметь общий список параметров. Когда фильтр один на всех, у каждой категории половина полей пуста, а нужных нет. Рабочий вариант – отдельный набор фильтров под каждую большую категорию.
Фасетка на штатных атрибутах против внешнего поискового двигателя
Чем этот вариант отличается от альтернативы
Наружный двигатель (Elasticsearch, SaaS-поиск)Наш подход
С чего начинается работатак же из словаря характеристик — двигатель не придумает атрибут, которого нетиз словаря характеристик: без него не заработает ни один вариант
Отбор по характеристикамвыигрывает на сложном полнотекстовом поиске, на отборе по атрибутам преимущества почти нетзапрос в базу магазина с индексами под фактические выборки
Актуальность наличияиндекс обновляется с задержкой; на скорых остатках покупатель это замечаетвыборка идет по той же базе, что и карточка — разногласия нет
Кто делает, когда сломалосьнужен тот, кто знает конкретный двигатель и схему его индексалюбой PHP-разработчик: все внутри магазина
Что добавляется после запускаотдельный сервис или подписка – постоянная статья расходов и еще одна точка отказаничего, кроме обычного хостинга магазина
Бесплатный аудит каталога перед фильтром
Фильтр – это не модуль, который ставится за час. Это следствие того, как аккуратно заведены свойства. Аудит показывает, сколько работы стоит между вашим каталогом и рабочим фильтром.
Что мы измеряем
Состояние характеристикСколько позиций заполнены атрибуты и насколько одинаково они названы в пределах категории. Различные названия одного параметра – главная причина неработающего фильтра.
Объем каталогаСчитаем двумя методами – картой сайта и штатным поиском. Измеренные ориентиры по большим каталогам нашей выборки: 5561, 6486, 13428 и 54302 позиции.
Скорость выборкиСколько времени отдается страница категории и происходит при нескольких активных фильтрах. Измеренный ориентир хорошего результата на 54 тыс. позиций: 413,8 мс первого ответа.
Адреса фильтровЧто происходит с адресом при выборе параметров и не плодит ли это бесконечные комбинации в индексе. Это главный SEO-риск фасетной навигации.
Внутренний поискНаходит ли он товар по артикулу, части названия и ошибке в слове. Зачастую нет, и это видно из первой же проверки.
Пустые выборкиЧто видит покупатель, когда комбинация фильтров не приносит результатов. Пустая страница – самый простой способ потерять заказ.
Что вы получаете
Оценка заполненности характеристик по каждой большой категории.
Перечень параметров, которые следует вынести в фильтр, и мешающих.
Замеры скорости категории до работ — затем сравнивать цифры.
Разговор на 30-40 минут по документу.
Срок: 2–4 рабочих дня
Почему это бесплатно
Ибо в девяти случаях из десяти настоящая задача — не «поставить фильтр», а «привести в порядок характеристики». Показать это на цифрах честнее, чем продать не заработающий модуль.
Что дальше
После аудита – сумма и срок по этапам с датами, договор, счет, акт.
Короткая форма: контакт и адрес сайта
Не нашли свой случай?
Опишите, как это устроено у вас, — ответим, подходит ли «Фильтр и поиск для большого каталога» и что это значит в вашей ситуации. Без брифа и без звонка: один вопрос, один ответ.
Договор, акт и гарантия 30 дней
На каждый проект письменный договор: объём, сроки, сумма, порядок приёмки. После сдачи — акт и счёт, затем 30 календарных дней гарантии.
ФОП и безналичный расчёт
Исполнитель — зарегистрированный ФОП. Оплата на счёт с закрывающими документами.
Права и доступы — ваши
Код, дизайн и материалы переходят к вам после полной оплаты. Домен, хостинг, репозиторий оформляем на вас.
Портал клиента вместо переписки
Во время работы вы получаете доступ к порталу: договоры, счета, акты и статус проекта в одном месте.
Заказчики из Европы
Среди работ — проекты для Норвегии, Болгарии, Молдовы и Испании.
Цифры, которые можно проверить
Каждый кейс в портфолио — со ссылкой на живой сайт и техническим замером.
Сначала аудит, потом сумма
Прайса на сайте нет намеренно: объём одной и той же работы у двух клиентов отличается кратно.
Говорим «нет», когда не уверены
Если задача не наша или срок нереальный — скажем сразу.
Что влияет на стоимость
Почему две одинаковые на вид задачи считаются по-разному
Где сейчас лежат характеристикиОтдельные атрибуты в карточке – фильтр собирается быстро. Характеристики внутри текста описания приходится доставать парсером с ручной сверкой по каждой категории, и это становится основной частью работы, а не приложением к ней.
Количество больших категорийКаждая категория – свой словарь параметров, свой набор единиц измерения и свое решение о том, что выносить в фильтр. Две категории и двадцать – разные объемы, хотя модуль в обоих случаях один.
Насколько разнобойно названы атрибутыСводка "40 Вт", "40 Вт." и «мощность 40 вт» к одному значению делается скриптом только там, где вариантов десяток. Когда их сотни и часть с содержательными ошибками, требуется ручная вычитка списка значений.
Состояние внутреннего поискаНормализация артикула и поиск по части названия – краткая работа. Устойчивость к опечаткам, подсказки с переходом в карту и аналитика запросов без результатов добавляются отдельными блоками.
Объем каталога и текущая скоростьНа десятках тысяч позиций к работе прилагается просмотр индексов базы и кэширование счетчиков: иначе каждый клик по фильтру пересчитывает количество позиций заново. На нескольких тысячах этого обычно не нужно.
Решение об индексации комбинацийЕсли вы уже имеете органический трафик на страницы фильтров, необходим разбор текущих адресов перед тем, как что-либо закрывать. Когда магазин новый, правила сдаются сразу — и это заметно короче.
Кейсы
Задачи и результат в цифрах — все показатели сняты нашим замером
интернет-магазин тактического снаряжения с каталогом более 50 тыс. позиций
Задача
Удержать сверхбольшой ассортимент с подробной фильтрацией по характеристикам и не потерять скорость отдачи страниц.
Решение
Магазин на OpenCart 3 с модулями фильтрации по Cloudflare, две языковые версии. Полная разметка локального магазина – девять типов структурированных данных. Шесть способов расчета в чекате.
Результат
Каталог 54 302 товаров и 635 категорий, карта сайта как индекс — итого 110 096 адресов; перекрестная проверка штатным поиском дала расхождение 0,4%. TTFB 413,8 мс, полная загрузка 511,1 мс при весе HTML 421,5 КБ – на каталоге в 54 тысячи позиций. Измерение 31.07.2026.
интернет-магазин профессиональной косметики с каталогом более 5 тыс. позиций
Задача
Собрать в один каталог обширный ассортимент с навигацией по брендам и типам средств.
Решение
Магазин на OpenCart с каталогом по брендам и типам средств, условиям бесплатной доставки от суммы и двумя способами расчета.
Результат
Каталог 5 561 товар — считали штатным поиском: 55 страниц по 100 позиций плюс 61. TTFB 801,2 мс, полная загрузка 930,7 мс при весе HTML 153,8 КБ. Найдено: разметка ограничена Organization и PostalAddress, товарной нет; при легкой разметке первый ответ медленный – узкое место на стороне сервера и запросов, а не верстки. Измерение 31.07.2026.
Что нужно от вас
Без этого не начнём — лучше подготовить заранее
1Доступ на сайт и базу или тестовую копию.
2Прайс с характеристиками, если их нужно доливать в каталог.
3Список параметров, по которым покупатели реально спрашивают менеджера, – это лучший источник для фильтра.
4Решения, какие комбинации фильтров должны быть в индексе, а какие закрыты.
5Доступ к Search Console, если права подтверждены.
6Одного человека с правом утвердить структуру характеристик.
Если чего-то из этого нет — скажите, подскажем, как собрать или сделаем сами отдельной задачей.
Частые вопросы
Что спрашивают чаще всего — с конкретными ответами
Поставили модуль фильтра, а он показывает мусор – в чем дело?
Почти всегда в характеристиках. Модуль строит фильтр из атрибутов: если у половины товаров они пустые, а у второй половины тот же параметр назван тремя способами, в списке значений появляются дубли и пустые строки. Покупатель делает один клик, получает три позиции вместо тридцати и больше не пользуется фильтром. Поэтому работа начинается со словаря характеристик по каждой большой категории, а не с настроек модуля. Честный предел: фильтр не добавляет спроса на товар, которого не ищут, — он лишь убирает препятствие между намерением и картой.
Фасетный фильтр не завалит индекс комбинациями?
Завалит, если оставить его без правил. Каждый выбранный параметр создает адрес, комбинации умножаются, и каталог на несколько тысяч товаров способен сгенерировать сотни тысяч почти одинаковых страниц. Рабочее правило: открытыми остаются только те комбинации, под которые есть реальные запросы, остальные получают canonical на категорию и закрываются от обхода. Для масштаба: еще без всякой фасетки мы фиксировали 33 493 записей карты сайта на 8 690 уникальных адресов. Сразу предупреждаем о побочном эффекте – после чистки количество страниц в индексе некоторое время падает. Это обычный ход событий, а не ухудшение.
На каталоге в десятки тысяч позиций фильтр будет тормозить?
Не обязательно. Измеренный нами магазин снаряжения держит 54 302 товара и 635 категорий и отдает первый ответ за 413,8 мс, полную загрузку HTML – 511,1 мс. Второй магазин с каталогом 5 561 позиция при в десять раз меньшем объеме и легком HTML 153,8 КБ отдает первый ответ за 801,2 мс: дело не в количестве товаров, а в индексах базы, кэше и том, сколько запросов делает тема. Сразу уточним предел: наше измерение – это серверная часть. Что увидит конкретный покупатель, зависит от его устройства, сети и веса картинок в категории.
Покупатель выбрал три параметра и получил пустую. Что с этим делать?
Не показывать пустую страницу вообще. Минимум — счетчики у каждого значения: человек видит количество позиций в клике и в пустую выборку просто не входит. Второй слой — страница «ничего не нашлось» с названным отсеивающим больше всего фильтром и кнопкой снять именно его. Техническая деталь: подсчет для счетчиков на большом каталоге нужно кэшировать отдельно от страницы, иначе каждый клик перечисляет количество по всем значениям заново — и фильтр, который должен был ускорить отбор, начинает тормозить страницу.
Почему поиск не находит товар по артикулу?
Через формат записи. В базе артикул с дефисом покупатель вводит без него или наоборот с пробелом посередине или в другом регистре. Нормализовать надо по обе стороны: чистим и то, что ввели, и то, что лежит в базе, а результат держим отдельным полем для поиска. Далее – поиск по части названия и устойчивость к опечаткам. Это самое дешевое из доработок, которые вообще влияют на продажи в большом каталоге. Предел здесь очевиден: поиск помогает тому, кто уже знает название или артикул. Еще выбирающему покупателю нужны категории и фильтр.
Характеристики у нас лежат внутри описания. Это реально извлечь?
Реально, и именно это обычно и есть проект. Порядок такой: разбираем описания парсером по одной категории, получаем список найденных значений, вычитываем его руками – на этом шаге всегда вылезают и опечатки, и единицы измерения в трех вариантах – и только после этого заливаем в атрибуты. Сколько это длится, до аудита не назовет никто, поэтому этап идет отдельной строкой в смете и отдельной строкой в календаре. Если часть позиций вообще не имеет параметров в тексте, мы честно говорим, сколько их, и вы решаете, дополнять вручную или оставить вне фильтра.
Сколько времени займет и от чего сдвигается срок?
10-25 рабочих дней. Раскладка: аудит и словарь характеристик 1–3 дня, приведение атрибутов в строй 3–8, фильтр и правила адреса 2–5, поиск 2–4, скорость выборки 1–3, прием 1–2. Сдвигает срок ровно одна вещь – второй этап. Если атрибуты заполнены и названы одинаково, это настройка и оптимизация в нижней части диапазона. Если их нужно извлекать из описаний по нескольким тысячам позиций, основное время уйдет именно на это. Вторая причина смещения в нашей памяти нетехническая: решение о том, какие параметры выносить в фильтр, принимает кто-то с вашей стороны, и без этого человека этап стоит.
Почему вы не называете стоимость сразу?
Потому что его задает не количество товаров, а состояние характеристик, а его со стороны не видно. Два магазина с одинаковым каталогом на 6 тысяч позиций могут отличаться в объеме работ в разы: в одном атрибуты заведены и собрать фасетку, во втором все лежит в тексте описаний. Назвать вилку до проверки — это либо испугать того, кому работа коротка, либо пообещать недостающую сумму. Поэтому сначала бесплатный аудит каталога за 2–4 рабочих дня с документом на руки, затем сумма и срок по этапам с датами, договор, счет, акт.
Отправьте адрес магазина – проверим характеристики, фильтр и поиск.
В ответ – заполненность атрибутов по каждой большой категории, список параметров, которые следует вынести в фильтр, замеры скорости работы и оценка по этапам.
Из измеренных кейсовКаталог 54 302 товаров и 635 категорий, карта сайта как индекс
Прайса на сайте нет намеренно: объём той же работы у двух клиентов отличается в разы, и цифра «от» в этом случае ничего не объясняет. Сначала бесплатный аудит — считаем ваши страницы, дубли и скорость, — потом называем сумму и срок и фиксируем их в договоре.