Сделал бесплатный техSEO-аудит novostroy96.ru и закрыл согласованный пакет Issue: единый https без www, пагинация и canonical, живой sitemap вместо старых XML, robots без лишних Disallow, OG, lazy и сжатие баннеров, иерархия h1. Отдельно доработал модуль Яндекс.Турбо (отбор по EAN) и вывод единицы измерения рядом с ценой, плюс ссылки Telegram в шапке и футере.
Задача
У интернет-магазина стройматериалов Новострой в Екатеринбурге на OpenCart 2 накопились технические SEO-проблемы: www уходил через http, дубли URL и пагинации, битые и устаревшие sitemap, лишние Disallow в robots, слабая иерархия заголовков и тяжёлые баннеры. Параллельно нужны были доработки витрины: фильтр товаров в выгрузке Яндекс.Турбо и понятная единица рядом с ценой.
Решение
Бесплатный технический SEO-аудит live + код по чеклисту, Word-отчёт со списком Issue и ценами
Один 301: www и http сразу на https://novostroy96.ru, нормализация двойного слэша и слеша ЧПУ
Пагинация: канон и title без дублей page=1 и последующих страниц
robots.txt: открыли акции и /catalog/view/, убрали грубый Disallow /*?
Sitemap: отключили старые sitemap1-15, редирект на живой фид Яндекса
noindex служебных, canonical info-страниц, OG, schema телефона и типа магазина, favicon, noopener
h1 на главной, убрали лишние h3 в модулях каруселей
Lazy, alt, сжатие баннеров и WebP слайдера
Яндекс.Турбо: отбор товаров по EAN = да
Карточка товара: единица из UPC рядом с ценой
Ссылки Telegram (и мессенджеры) в шапке, футере и контактах
Новострой в Екатеринбурге
novostroy96.ru — интернет-магазин строительных и отделочных материалов на OpenCart 2 и теме emarket. Большой каталог, акции, доставка по городу. Задача: сначала честный техSEO-аудит, потом внедрение без переписывания половины сайта.
Каталог после канонизации
Убрал цепочку www через http на https, выровнял ЧПУ и пагинацию, навёл canonical. Категории вроде изоляционных материалов открываются с одним понятным URL, без дублей со слешем и index.php-мусором в индексе.
Карточка и единица у цены
В карточке товара вывел единицу измерения из поля UPC рядом с ценой (например /уп), без лишней подписи. Параллельно модуль Яндекс.Турбо научил выгружать только позиции с EAN = да — клиент сам помечает, что уходит в фид.
Акции снова в индексе
В robots раздел /specials/ был в Disallow при живом пункте меню. Убрал запрет, оставил защиту служебных путей. Страница акций снова доступна поисковику наравне с витриной.
Контакты и мессенджеры
На контактах схема проезда и форма связи. В шапке и футере добавлены рабочие ссылки Telegram рядом с привычными каналами связи — клиент просил Max и Telegram с тем же номером, что был в WhatsApp.
Единый https-адрес и актуальный sitemap вместо XML 2022
Акции индексируются, служебные URL закрыты
Фид Турбо фильтруется по EAN, единица видна у цены
Клиенту отдан Word-отчёт: пункт аудита и что сделано
db812.ru - качество фото на ocStore
Интернет-магазин стоматологических материалов Dental Base на ocStore 3.0.3.7 (тема CyberStore). Фото после «оптимизации» мылились: виноват был не модуль сжатия, а штатный GD-ресайз в image/cache и слишком мелкие размеры в теме. Слайдер MegaSlider Pro отдает оригинал, для товаров — аккуратный ресайз с лёгкой резкостью и увеличенные размеры в настройках темы.
Задача
На db812.ru изображения после оптимизации выглядели недостаточно чётко: баннеры MegaSlider и фото в карточках товаров «мылились» сильнее исходников. Нужно было найти причину в настройках/модулях ocStore 3.0.3.7, подобрать параметры без заметной потери детализации и дать инструкцию, как дальше загружать фото.
Решение
Разбор админки и кода: отдельного модуля TinyPNG/WebP-сжатия нет, «уровень сжатия» в настройках — это GZIP HTML, не JPEG
Диагностика: JPEG quality уже 100, мыло даёт GD-ресайз в image/cache (баннер 3840×928 → 1920×464) и мелкие размеры темы (товар 400, popup 700)
MegaSlider Pro: отдача оригинала баннера без прогона через model_tool_image->resize
system/library/image.php: лёгкий unsharp после уменьшения для товарных превью, WebP с тем же quality
Увеличение размеров изображений в теме CyberStore (товар 800, popup 1400, список 500, похожие 400) и очистка image/cache
Инструкция клиенту: как грузить баннеры в MSPRO desktop/mobile и исходники товаров 1200–1600 px
Магазин Dental Base
db812.ru — интернет-магазин стоматологических материалов на ocStore 3.0.3.7 и теме CyberStore. Главная крутит акции через MegaSlider Pro, каталог полный фотографий титановых оснований и комплектующих — любое «мыло» на баннере и в карточке сразу бросается в глаза.
Причина была не в «сжатии»
Отдельного модуля автосжатия фото не оказалось. JPEG quality на сервере уже 100. Баннер мылился из-за даунскейла GD в image/cache: оригинал 3840×928 резался до 1920×464. В карточках тему добивали мелкие размеры — большое фото 400×400 и popup 700×700 растягивались CSS и выглядели хуже исходника.
Слайдер и карточки после правок
В MegaSlider Pro убрал ресайз — на витрину уходит оригинал из catalog, браузер масштабирует чётче GD. Для товаров оставил штатный ресайз, но с лёгким unsharp и увеличенными размерами в CyberStore: товар 800, popup 1400, список 500. Карточка снова читается резко, без лишнего зума «в кашу».
Результат
Баннеры слайдера без GD-мыла, как загруженный оригинал
Фото в карточке и каталоге заметно чётче за счёт размеров темы
Есть понятная схема дальнейшей загрузки баннеров и товаров
novicam.spb.ru - фид Яндекс.Маркет OpenCart
У дилера Novicam в СПб старый модуль фида в админке не отображался. Через FTP поставил Yandex.YML for OpenCart, собрал фид на весь каталог и отдал URL для кабинета Маркета. Через месяц по запросу клиента поправил некорректные остатки и фото в YML — без доплаты.
Задача
OpenCart 3.0.3.2 (trs-3.0.2.0): нужен рабочий плагин выгрузки на Яндекс.Маркет по всем товарам. Старый модуль был в системе, но в админке не отображался. Позже в кабинете Маркета криво показывались остатки и фото — нужна правка фида. Дальше клиент планировал отдельные кворки на Ozon, WB, Сбер.
Решение
Проверил админку: старый модуль фида не виден в интерфейсе
Через FTP установил модуль Yandex.YML for OpenCart (ocStore)
Настроил выгрузку всего каталога, отдал URL фида для кабинета Яндекс.Маркета
По обратной связи поправил остатки (count) и блоки picture в офферах YML
Каталог Novicam на OpenCart
novicam.spb.ru — официальный представитель Novicam в СПб: видеонаблюдение, домофоны, СКУД. Нужна была выгрузка всего ассортимента в Яндекс.Маркет без ручной сборки прайса.
YML-фид модуля
Поставил Yandex.YML for OpenCart, фид открывается по route extension/feed/yandex_yml: shop, категории, offers с ценой, vendor, description и картинками. URL отдал клиенту для кабинета Маркета.
Правка остатков и фото
Через месяц: в Маркете криво остатки и фото. В оффере поправил несколько picture и count (например 48 шт. у MASK FHD BLACK) — фид снова принимается без доплаты.
Карточка в каталоге
Данные для фида берутся из карточек OpenCart: название, цена, наличие, галерея. Дальше по плану клиента — отдельные выгрузки на Ozon, Wildberries и Сбер.
Результат
Фид Яндекс.Маркета подключён и отдаёт каталог
Остатки и изображения в YML исправлены
Модуль готов как база под другие маркетплейсы
phelon.ru - формы и каталог OpenCart
Для каталога аналитического оборудования phelon.ru на ocStore 3 сделал формы лидов в шапке и на карточке товара, навёл иерархию меню и витрину «Каталог оборудования», убрал Jivo и раздражающую авто-ссылку в текстовом редакторе.
Задача
Нужны кнопка и форма «Обратный звонок» в шапке и «Узнать цену» на карточке товара с письмами на email клиента (данные формы, IP, URL). Hover у кнопок. Третий уровень в левом меню, сетка каталога в 3 ряда, отключить Jivo и авто-ссылку по ПКМ в редакторе. Потом — правки по высоте/цветам кнопок и полному выводу подкатегорий в модуле каталога.
Решение
Кнопка «Обратный звонок» в шапке под телефоном, hover-смена цвета, зелёный акцент текста
Модальная форма обратного звонка по ТЗ: поля + IP + страница отправки, письмо на email клиента
На карточке: кнопка «Узнать цену» вместо старого блока, форма с заголовком как на кнопке
Левое меню: третий уровень иерархии с отступами подкатегорий
«Каталог оборудования»: сетка разделов в 3 ряда, показ подкатегорий через UniShop2 «Стена категорий»
Отключил Jivo; в редакторе убрал авто-ссылку по ПКМ — ссылка только при выделении текста
Обратный звонок в шапке
В правом верхнем углу под телефоном — кнопка «Обратный звонок» с hover. Форма по макету из ТЗ: заявка уходит на email клиента вместе с IP и адресом страницы, с которой отправили.
Узнать цену на карточке
Вместо старого информационного блока — кнопка «Узнать цену». Заголовок формы подтягивается из текста кнопки. Письмо менеджеру с полями формы, IP и URL товара.
Меню и каталог 3 уровня
В сайдбаре появился третий уровень (например Термический анализ → дилатометры, DSC…). Страница «Каталог оборудования» — сетка разделов в три колонки с подкатегориями.
Подкатегории в модуле
Если на витрине не все подкатегории — включаются галочками в UniShop2 «Стена категорий / Каталог товаров». Клиенту показал, где ставить галочки для полного списка.
Результат
Лид-формы в шапке и на товаре с письмами на email
Меню и каталог с трехуровневой иерархией
Jivo отключён, редактор без навязчивой вставки ссылок
makmen.ru - блог, клиенты и Telegram
Доработал makmen.ru на OpenCart: переименовал новости в блог (/blog/, title и H1), поменял YouTube на Telegram в футере, добавил блок «больше о проектах в Telegram» на карточку товара и переделал /klienti в слайдер с логотипом, текстом и несколькими фото внутри слайда.
Задача
Нужен раздел блог со ссылками в шапке и футере и понятным добавлением статей (текст, фото, видео). В подвале заменить YouTube на Telegram. На карточке товара — блок с приглашением в Telegram. Раздел /klienti переделать в слайдер: переключение между клиентами и несколько фото внутри слайда, заполнение из админки.
Решение
Раздел новостей переименовал в блог: URL /blog/, title «Блог компании MakMen», H1 «Блог», ссылки в шапке и футере
Показал SEO-slug статей и поправил стили картинок в записях; пагинацию блога зафиксировал в коде (10 на страницу)
В футере: VK и Telegram с нужными ссылками и иконками
На карточке товара: жирный текст «Больше о наших проектах в телеграм канале компании» + крупная синяя иконка Telegram
Клиенты: слайдер на баннерах OpenCart — логотип, заголовок, несколько фото в текстовом поле, стрелки между клиентами
Инструкция клиенту: как вставлять фото в редактор баннера (50% + обтекание) для 2+ изображений в слайде
Блог вместо новостей
Раздел открывается по /blog/, в меню и футере — «Блог», title и H1 «Блог компании MakMen». Статьи с текстом, изображениями и SEO-slug (например kak-vybrat-parokonvectomat). Клиенту объяснил, как добавлять записи в uni_news.
Слайдер клиентов
Страница /klienti: слайдер по клиентам со стрелками. У Самбери — логотип, заголовок, два фото магазина и текст. Движок на баннерах OpenCart: клиент сам наполняет слайды из админки.
Telegram на карточке товара
Под характеристиками: жирный призыв перейти в канал компании и увеличенная синяя иконка Telegram. Без отдельного макета дизайнера — блок в шаблоне карточки.
Как заполнять из админки
Несколько фото в слайде клиента — через «Вставить изображение» в поле заголовка/текста баннера. Размер ~50% и обтекание, чтобы два кадра стояли рядом. SEO-slug статьи задаётся в карточке новости.
Результат
Блог с ЧПУ и статьями в шапке/футере
Слайдер клиентов с мультифото
Telegram в подвале и на карточках товаров
khoroshiyvkus.ru - доставка продуктов
На khoroshiyvkus.ru доработал OpenCart под минимальный сценарий заказа продуктов: каталог по категориям, корзина, оформление без регистрации с ФИО/телефоном/адресом, капча, фиксированная доставка и отправка заказа на email.
Задача
Нужна была доработка готового OpenCart под доставку продуктов: убрать лишнее, оставить категории и товары, корзину, заказ без регистрации с капчей, обязательные ФИО и телефон, страницы доставки и контактов, поиск с подсказками. После первой сдачи клиент попросил упростить адрес до одной строки, убрать способы оплаты, объединить имя/фамилию в ФИО, сделать email необязательным и настроить письма на нужный адрес. Доступа к админке сначала не было — сбросил пароль через БД с хостинга.
Решение
Сброс доступа в админку через БД, очистка демо-данных
Категории: мясная гастрономия, бакалея, молочка, корма, заморозка, бытовая химия — с фото групп
Импорт товаров из прайса: название, категория, описание, цена, единая картинка товара
Заказ без регистрации, капча на оформлении
Checkout упрощён: одно поле ФИО, телефон, адрес одной строкой, email необязателен
Убраны способы оплаты, оставлена фиксированная доставка с настройкой из админки
Уведомления о заказах на email магазина
Показал клиенту, где править доставку, страницы Доставка/Оплата и соцсети в теме
Упрощённое оформление заказа
Стандартный checkout OpenCart с страной, регионом и обязательным email мешал простому сценарию доставки продуктов. Оставил обязательными ФИО, телефон и адрес одной строкой, email сделал необязательным, способы оплаты убрал. После оформления заказ уходит письмом на email магазина.
Адрес одной строкой
Вместо страны/региона/города с ошибками валидации клиент попросил одну строку, куда ввести адрес приезда. Переделал блок адреса под этот сценарий — меньше полей, меньше отказов на оформлении.
Доставка из админки
Фиксированная доставка 390 ₽ настраивается в Модули → Доставка. Клиенту показал, где менять стоимость и статус, чтобы дальше править самому без разработчика.
Страницы и соцсети
Тексты Доставка и Оплата правятся в Каталог → Статьи. VK и WhatsApp — в настройках шаблона Cyber Store, блок подвала → социальные сети. Передал клиенту короткую инструкцию по админке.
Результат
Каталог и категории заполнены по ТЗ
Заказ без регистрации с капчей и упрощённым checkout
Уведомления о заказах на email магазина
Клиент может сам править доставку, страницы и соцсети
yonka-online.ru - атака бота и падение сайта
На yonka-online.ru OpenCart стал отдавать ошибки и не грузиться: хостинг упирался в лимиты. Выяснил, что нагрузку давал спам-бот на странице контактов, заблокировал атакующие IP и убрал самоссылку в футере на contact-us, чтобы бот не крутил цикл запросов.
Задача
Магазин на OpenCart стал выдавать ошибки и не грузиться. В админку зайти получалось не всегда, доступ был по FTP. Хостинг писал, что услуга превышает лимиты и сайт зависает — нужна оптимизация. По факту нагрузку создавал спам-бот, который постоянно слал сообщения со страницы контактов.
Решение
Диагностика недоступности сайта и ответов хостинга по лимитам ресурсов
Выявление спам-бота, который крутил страницу contact-us и слал сообщения
Блокировка группы атакующих IP-адресов
Убрал ссылку на контакты в футере именно на странице контактов, чтобы бот не зацикливался
Проверка, что на остальных страницах ссылка в футере осталась на месте
Магазин снова в работе
yonka-online.ru — официальный магазин-партнёр косметики YON-KA на OpenCart. После атаки бота на форму контактов сайт упирался в лимиты хостинга и переставал открываться. Убрал источник нагрузки: бот больше не крутит contact-us по ссылке из футера, а атакующие адреса были отсечены.
Результат
Сайт снова открывается без ошибок и зависаний
Снята лишняя нагрузка со спам-формы контактов
Защита без постоянной гонки за новыми IP бота
printbar.az - доработка слайдера OpenCart 3
На printbar.az модуль слайдера 2OC ломал вёрстку из-за переопределённого Bootstrap и более новых скриптов темы. Разобрал конфликт CSS/JS, поправил стили под шаблон и вернул рабочее переключение сетки и стрелок.
Задача
Слетела вёрстка модуля слайдера. Модуль куплен у 2OC, автор не делал доработку под шаблон и советовал только адаптировать стили под переопределённый Bootstrap. На практике ломались и стили, и скрипты: тема использовала более новые версии, которые перебивали модуль.
Решение
Разбор конфликта стилей слайдера с Bootstrap и CSS темы
Поиск и устранение конфликтов JavaScript модуля и темы
Адаптация стрелок слайдера: белые на красном полупрозрачном фоне в стиле шаблона
Исправление стилей режима сетки и проверка переключения
Проверка карусели товаров на витрине после правок
Витрина PrintBar
printbar.az — магазин печати на одежде на OpenCart 3 с кастомной темой. Купленный слайдер рассчитан на стоковый стек, а тема тянет более новые стили и скрипты — из-за этого модуль «плыл» на витрине.
Сломанная вёрстка каталога
На каталоге из-за конфликта появлялись лишние элементы и горизонтальный скролл. Пришлось не только подкрутить CSS, но и разобрать скрипты модуля: без этого правка стилей не держалась.
Слайдер в стиле шаблона
Стрелки сделал белыми на красном полупрозрачном фоне, как в дизайне PrintBar. Режим сетки тоже поправил — переключение снова работает без поломок раскладки.
Результат
Слайдер корректно работает в кастомной теме OpenCart 3
Убраны конфликты стилей и скриптов с Bootstrap темы
Стрелки и сетка выглядят единообразно с магазином
filters.su - правки вёрстки и SEO
На filters.su поправил вёрстку после кривого импорта описаний, выровнял карточки, собрал блок «Надёжность проверенных брендов», подчистил футер и закрыл SEO-дыры: HTTPS в config, 404, дубли и пустые title/description.
Задача
Нужен был пакет правок: наезд блоков из-за мусорных inline-стилей в описаниях, разная высота карточек и скролл внутри них, кривые тексты, некликабельный email, лишние пункты в футере, слайдер брендов заменить на блок с логотипами, проверить мобильную вёрстку и после работ убрать дубли title/description.
Решение
Удалил лишние inline-стили в описаниях товаров SQL-запросом по таблице описаний
Выровнял высоту карточек и убрал нижний скролл, почистил лишние неразрывные пробелы
Выровнял тексты на витрине и сделал email в шапке кликабельным
Убрал из футера акции, сертификаты, партнёрскую программу и рассылки
Проверил адаптив главной, категорий и карточек на эмуляторах и реальном телефоне
Заменил слайдер брендов на блок «Надёжность проверенных брендов» с редактируемыми баннерами
Включил HTTPS в config.php, убрал дубли URL и починил страницы с 404
Заполнил и уникализировал title и description, убрал перепутанные названия в мета
Витрина filters.su
Магазин поставки фильтров и масла для компрессорного оборудования. После импорта в описаниях остались лишние inline-стили — блоки наезжали друг на друга. Почистил описания через БД, выровнял карточки и тексты на витрине.
Блок проверенных брендов
Вместо нижнего слайдера собрал секцию «Надёжность проверенных брендов»: логотипы плашками с кликабельными ссылками. Баннеры добавляются и правятся из админки без правки шаблона.
Каталог и SEO-чистка
После скана нашёл дубли title из-за чужих названий в мета, пустые description и отсутствие принудительного HTTPS в config.php. Исправил редирект на https, 404 и заполнил уникальные мета-теги по страницам.
Результат
Ровная вёрстка карточек и описаний без наездов блоков
Редактируемый блок брендов на главной
Мобильная версия проверена и подчищена
HTTPS, без дублей URL и с уникальными title/description
gmr-gifts.ru - ускорение категорий OpenCart
На B2B-магазине корпоративных сувениров gmr-gifts.ru медленно открывались категории и поиск. Разобрал тяжёлые SQL, добавил индексы и ускорил подгрузку данных: вместо 6-7 секунд сервер отвечает примерно за 1.67 с.
Задача
Страницы с товарами открывались медленно. Нужно было ускорить категории и поиск, чтобы переходы по каталогу не тормозили менеджеров и клиентов. До оптимизации ответ сервера занимал 6-7 секунд.
Решение
Профилирование медленных SQL на страницах категорий и поиска
Оптимизация запросов подгрузки товаров, фильтров и связанных данных
Добавление индексов в таблицы, которые тормозили выборку
Проверка, что долгих запросов в логе больше нет
Замер в браузере и контроль через Google PageSpeed
Каталог бизнес-сувениров
gmr-gifts.ru — B2B-витрина корпоративных подарков и мерча на OpenCart. При большом каталоге страницы категорий и поиска открывались по 6-7 секунд — для ежедневной работы с ассортиментом это критично.
Разбор тяжёлых SQL
Профилирование показало узкие места в подгрузке товаров, фильтров, скидок и связанных таблиц. Оптимизировал запросы и добавил индексы там, где выборка шла по неиндексированным полям.
Быстрее переходы по каталогу
После правок долгих запросов не осталось: по замерам в браузере ответ сервера около 1.67 с. Google PageSpeed вывел страницу категории в зелёную зону по скорости.
Каталог без ожидания
Поиск и листинг товаров стали ощутимо быстрее без смены темы и без потери функционала фильтров. Магазин остаётся тем же OpenCart, просто перестаёт тормозить на типовых страницах каталога.