Обратный звонок
Вам перезвонят
Ваше имя
Телефон для обратной связи
E-mail
Краткое описание Вашего вопроса
Портфолио

Filato Italiano: доработка интернет-магазина пряжи на Shop-Script

Развитие магазина пряжи и товаров для шитья на Webasyst: продажи в граммах, метрах и штуках, карточки-дублёры для Ozon, распределение остатков после продаж на Ozon и Wildberries, доставка, скидки, поиск и мобильная версия.

О проекте

Filato Italiano — интернет-магазин итальянской пряжи, инструментов для вязания и товаров для шитья. Команда Quadro Design дорабатывала filatoitaliano.ru на Webasyst и Shop-Script: продажу весовых и мерных товаров, оформление заказа, доставку, распределение остатков между сайтом и маркетплейсами, поиск, каталог и отдельные шаблоны для компьютеров и телефонов.

Главная особенность проекта — разные единицы продажи в одном магазине. Пряжа продаётся граммами, ткани и тесьма — метрами, инструменты и часть материалов — штуками. При этом покупатель сравнивает пряжу по цене за 100 г, выбирает фактическое количество, а маркетплейс получает отдельные предложения с фиксированными фасовками. Эти различия необходимо учитывать в карточке товара, корзине, складском учёте, оплате, доставке и печатных ярлыках.

В кейсе собрана история работ и требований за 2021–2026 годы. Повторяющиеся обращения объединены по функциональным направлениям. Выполненные изменения отделены от дополнительных пожеланий и повторных ошибок, окончательное устранение которых в истории проекта не подтверждено.

Продажа пряжи на вес и товаров с дробным количеством

Переход от множества весовых артикулов к одному

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

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

Изменения затронули карточки, каталог, главную страницу и мобильные шаблоны. Для поля веса увеличили доступное пространство. Счётчик корзины доработали так, чтобы он показывал количество товаров, а не сумму граммов.

Произвольный вес вместо принудительной кратности

Для весовых товаров требовалось разрешить ручной ввод фактического количества, включая значения меньше 100 г и числа, не кратные 50. Отдельно исправляли ситуации, когда введённое количество округлялось до 100 г или ближайшего шага, хотя покупатель выбирал другое значение.

В одном из поздних обращений товар добавлялся в корзину в количестве 321 г, но при изменении на 330 г количество превращалось в 350 г, а стоимость оставалась прежней. Исправление охватывало согласованность количества и суммы, а не только работу кнопок «−» и «+».

Убрали неподходящую приписку «100 г» или «1 шт.» к добавленному товару, когда она не соответствовала фактически выбранному количеству.

Тип товара «Метры» и шаг 0,5 м

Для кружева и других мерных товаров добавили отдельное представление единиц измерения. Метры должны корректно отображаться в каталоге, карточке, корзине, подтверждении заказа и личном кабинете.

Первоначально в поле количества задавалось значение 1, а кнопки изменяли его с шагом 0,5 м. Позднее отдельно согласовали возможность ручного ввода количества при сохранении шага кнопок.

Устранили округление дробных значений до целого при переходе к оформлению заказа. Исправляли и обратную ошибку, когда 0,5 м попадали в корзину как нулевое количество. Эти изменения потребовали доработок не только темы, но и обработки количества в Shop-Script.

Отдельный шаг 0,1 м

Для части ассортимента создали тип «Метры 0,1» на основе типа «Метры 0,5» с сохранением набора характеристик. Это позволило использовать разные шаги выбора для разных товаров, не переводя весь мерный ассортимент на одну схему.

В ходе проверки исправили неработающие мобильные кнопки количества, перенос дробного значения из карточки в корзину и исчезновение доставки Почтой России при дробном количестве. Проверка касалась обоих вариантов — 0,5 и 0,1 м.

Продажа остатка только целиком

Для остатков, которые нельзя делить, реализовали фиксированное количество. Покупатель видит заранее установленный объём и не может заказать меньше или больше него.

Чтобы эта функция не мешала обычному складскому учёту, фиксацию связали с отдельным признаком «Да/Нет». При значении «Да» количество фиксируется; «Нет» и незаполненное значение оставляют обычный выбор с учётом доступного остатка.

Функция предназначалась для товаров разных типов, а не только для пряжи. Она отделяет требование продать остаток целиком от общего ограничения «не больше, чем есть на складе».

Единицы измерения и формат цены

Настраивали раздельный вывод граммов, метров и штук. У спиц убрали подпись «в 100 г», для штучных мотков и соответствующих товаров заменили граммы на штуки. Для мерных товаров добавляли обозначение цены за метр, в том числе в рекомендательных блоках.

Исправляли расхождения между каталогом и карточкой: цену за 1 г вместо цены за 100 г и уменьшенную вдвое цену мерного товара. У целых значений количества убирали ненужные десятичные нули, не отменяя дробные значения у товаров, продаваемых метрами.

На позднем этапе унифицировали обозначение граммов: вместо «гр» и «гр.» используется «г» с пробелом после числа. Это изменение заменило более ранние варианты оформления единиц.

Карточки-дублёры для Ozon и плагин «Распределение остатков»

Оригинал в граммах и дублёр в упаковках

Для продажи на Ozon использовались отдельные карточки-дублёры. Оригинальный товар продаётся на сайте граммами, а дублёр — штуками с фасовками, например 100, 200 и 500 г. Дублёры скрыты от обычной витрины магазина и связаны с интеграцией маркетплейса.

После продажи упаковки количество у дублёра менялось, но остаток оригинала приходилось корректировать вручную. Для автоматизации этого процесса разработали плагин «Распределение остатков» — stockupdate.

В модели учёта разделены склад Filatoitaliano для сайта и склад Ozon. Плагин должен учитывать фактический объём товара и пересчитывать доступные упаковки по заданным правилам после продажи.

Правила распределения по общему остатку

В первоначальном техническом задании приведены следующие примеры распределения для набора из трёх фасовок:

  • При общем остатке более 5000 г — четыре упаковки по 500 г, пять по 200 г и пять по 100 г: всего 3500 г для Ozon.
  • Для диапазона 3500–5000 г — три упаковки по 500 г, пять по 200 г и пять по 100 г: всего 3000 г.
  • Для диапазона 2000–3500 г — две упаковки по 500 г, три по 200 г и три по 100 г: всего 1900 г.
  • Для диапазона 1200–1999 г — одна упаковка 500 г, две по 200 г и две по 100 г: всего 1100 г.

Это примеры из исходного задания, а не полный перечень всех настроек плагина. Для малого остатка отдельно оговаривалось ручное распределение; возможность ручной корректировки требовалось сохранять и при других значениях.

После продажи система должна заново выбрать подходящее правило, а не только уменьшить количество проданной фасовки. Например, при переходе из диапазона более 5000 г в следующий диапазон изменяется весь набор упаковок. Остальной объём остаётся на складе сайта.

Согласованность граммов и количества упаковок

Проверяли, чтобы вес, выделенный для Ozon, соответствовал сумме фасовок у дублёра. Если по правилу на маркетплейс выделено 3000 г, количество упаковок должно представлять именно этот объём.

Во время тестирования обнаружили зависимость от порядка операций Shop-Script: обработчик плагина срабатывал раньше штатного списания. Для согласования последовательности внесли изменения в Shop-Script. После этого заказчик подтвердил правильный расчёт в проверенном сценарии.

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

Разный набор фасовок у разных товаров

Первоначальная версия ожидала одинаковые фасовки у всех дублёров. Затем потребовалась поддержка товаров только с двумя или одной упаковкой, например без варианта 100 г.

Правила расширили с учётом состава артикулов. Отсутствующая фасовка обозначается отрицательным значением в настройке правила, а соответствующий артикул удаляется из дублёра. Это не отрицательный товарный остаток: признак используется для выбора подходящего условия.

Для одинакового общего веса могут существовать разные правила — с тремя фасовками и с двумя. После уточнения порядка настройки заказчик подтвердил работу такого варианта.

Штучные товары и мерные комплекты

Дополнительно настраивали распределение для штучного ассортимента. В требованиях были свои пороги: например, выделять определённое количество на Ozon, а остальные единицы оставлять сайту.

Исправили обработку границ диапазонов: крайние значения не попадали под условие из-за строгих сравнений. Отдельно уточнили, что основной склад внутри скрытого дублёра не использовался так же, как основной склад оригинала; важны участвующие в продаже остатки и количество для маркетплейса.

Для тесьмы обсуждалась продажа комплектами по 3 и 10 м. Исходный весовой алгоритм не обеспечивал нужную обработку двух таких вариантов. В проверенном решении ограничились одной фасовкой 10 м. Универсальная поддержка произвольных мерных комплектов в истории проекта не подтверждена.

Возвраты, отмены и удалённые заказы

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

Позднее обнаружили различие между возвращённым и удалённым заказом: плагин обрабатывал не все события. В декабре 2025 года внесли очередное исправление, однако последующие январские проверки снова показали возврат упаковки без полного пересчёта оригинала.

Поэтому в кейсе разделены реализованная обработка возвратов и повторное обращение по отменам. Окончательное закрытие всех описанных январских расхождений не зафиксировано.

Поддержка продаж Wildberries

После начала продаж на Wildberries выяснилось, что stockupdate обрабатывал только заказы Ozon. У дублёра после продажи на WB остаток менялся, а оригинал оставался без корректировки.

Исправили обработку заказов Wildberries, добавив их в работу плагина. Эта задача относится к распределению остатков после продаж, а не к разработке полной интеграции Wildberries с нуля.

Создание дублёров и устойчивость связей

Восстанавливали создание карточек через плагин «Создание дублёров Ozon». Отдельно исправили формирование артикула: вместо согласованной схемы из кода оригинала и значения ves_dlya_ozona к нему начал добавляться ID дублёра.

Лишняя часть нарушала связь, используемую пересчётом остатков. Вернули ожидаемый принцип формирования кода. Также исправляли неработающую кнопку «Собрать заказ» у поступивших заказов Ozon.

На следующем этапе доработали stockupdate, чтобы его изменения не мешали обновлению плагина «Ozon: Интеграция». Это отдельное улучшение совместимости; оно не означает, что все исторические изменения темы и Shop-Script перестали зависеть от обновлений.

Характеристики и названия с учётом вида товара

Разные данные для пряжи, спиц и материалов для шитья

Настроили разные варианты наполнения карточек каталога. Для пряжи важны состав, производитель, цвет и метраж; для инструментов и аксессуаров — название товара и собственные характеристики, без неподходящих упоминаний граммов.

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

Восстанавливали пропавший состав в мобильных названиях и исправляли объединение строк после переноса шаблонов.

Метраж моточной и бобинной пряжи

Для типа «Штуки (мотки)» настроили вывод заполненного метража конкретного мотка, например длины в 25 или 50 г. При этом фильтрация должна была продолжать использовать сопоставимый показатель длины в 100 г.

Позднее исправляли вывод фактически заполненной характеристики, например «200 м в 45 г», вместо неподходящего универсального обозначения. Отдельно поступало обращение по спандексу: на телефоне требовалось показывать длину в 10 г, а не в 25 г. Завершение именно этого дополнительного исправления не отмечено.

Ширина, размер и вид материалов для шитья

Для товаров раздела «Товары для шитья» добавили в мобильный каталог ширину и размер. У резинок заменили состав на ширину и вид изделия.

В дальнейшей поддержке устранили двойное отображение ширины в мобильных подкатегориях и появление у тканей в «Новинках» несуществующей характеристики «Длина в 100 г». В основной категории тканей такого значения не было: проблема касалась шаблона смешанного списка.

Предметные заголовки вместо общего слова «Пряжа»

Разделили формирование заголовков по группам ассортимента. Для шарфов используется обозначение «Шарф», для тканей — «Ткань», для соответствующих категорий — «Хлопковое кружево», «Кружево с вышивкой», «Кружево на сетке», «Кружево» и «Вышивка на сетке».

Также настроили обозначения «Аппликация», «Бахрома», «Тесьма», «Лента», «Резинка» и «Украшение». В согласованную схему вошли вид, производитель, ширина, размер и цвет.

Для вкладок для бюстгальтера отдельно убрали слово «Пряжа» и состав из заголовка, сохранив название категории, производителя и цвет. Это устранило перенос терминологии пряжи на другой вид товара.

Производитель и наименование в каталоге

На позднем этапе перестроили информационный блок: в первой строке вместо артикула разместили производителя мелким серым шрифтом, во второй — наименование более крупным. Длинное название производителя ограничили одной строкой с многоточием.

Для мобильного представления отдельно изменили положение наличия и всего информационного блока, добавили производителя над наименованием. После очередного нарушения оформления восстанавливали отсутствовавшего производителя, межстрочные расстояния и корректное отображение зачёркнутой цены.

Исправление дублей и настроек характеристик

Объединили дублирующиеся записи «Наименование» с сохранением данных. В поддержке также рассматривалось нарушение соответствия названия цвета и его кода; обновление Shop-Script проводилось с учётом необходимости сохранить индивидуальные доработки.

Отдельным пожеланием осталось управление видимостью категории независимо для разных типов товара. Реализация такого разделения в документе не подтверждена.

Категории, меню и порядок товаров

Редактируемое главное меню

Перенесли управление главным меню из статического блока в приложение «Меню», чтобы заказчик мог самостоятельно менять формулировки, ссылки и порядок пунктов.

Дорабатывали разделы «Каталог пряжи», «Вся пряжа», «Новинки», «Акции и скидки», «Инструменты и аксессуары», «Кружево и тесьма». Исправляли переходы к аксессуарам и средствам по уходу, добавляли отсутствующие составы пряжи и устраняли ссылки с ошибкой 404.

Для заголовков групп «По сезону», «По составу» и «По типу» изменили оформление: убрали поведение активной ссылки, стрелки и выделение при наведении, оставив постоянное подчёркивание.

Устойчивое выпадающее меню

Исправляли меню, которое закрывалось при перемещении курсора от «Каталога пряжи» к категориям в Safari и Яндекс Браузере. Отдельно устранили невозможность навести курсор на подкатегорию «Шарфы».

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

Подкатегории на странице раздела

Добавили переходы к подкатегориям непосредственно на страницах разделов, а не только в выпадающем меню. Исправляли адрес ссылки на кружевную ткань и другие неточности переходов.

Для страницы «Товары для шитья», используемой как вход в подкатегории, скрыли неподходящее сообщение «В этой категории нет ни одного товара». В одном из поздних уточнений согласовали, что фильтр на такой странице без собственного товарного списка не нужен.

Новые товары в начале ручного списка

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

Правило применяли к спискам пряжи, «Все товары» и «Новинки», а также к соответствующей категории. Для категорий с сортировкой по составу сохраняли свой порядок: новые позиции не должны нарушать заданную сортировку по характеристике.

После обновлений восстанавливали размещение новых товаров наверху. В каталоге также корректировали количество карточек в выдаче, чтобы последний ряд соответствовал общей сетке.

Категории и списки как разные источники

Разъяснили управление каруселями главной страницы: они получают товары из списков «Хиты продаж», «Новинки» и «Скидки», а не автоматически из одноимённых категорий.

Отдельно разбирали товары, которые не удавалось исключить из «Микрофибры»: они входили в дочернюю категорию, и менять принадлежность требовалось именно там. Аналогично при проверке фильтра состава выяснялось, что нужные товары не были включены в рассматриваемую категорию.

Доработка дизайна каталога и мобильных карточек

Интеграция предоставленной вёрстки

Интегрировали в магазин предоставленную вёрстку и функционал по макетам. Для компьютеров и телефонов использовались разные шаблоны; информационный контент отдельных страниц мог применяться в обеих версиях.

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

Карточки одинаковой высоты при разном наполнении

Для плитки и списка настраивали расположение производителя, наименования, состава, метража, цвета, наличия, цены и кнопки покупки. Кнопки выравнивали даже у товаров с разной длиной состава.

Под состав резервировали согласованное количество строк. Если название артикула отсутствует или состав занимает одну строку вместо двух, свободное место сохраняется, чтобы остальные элементы не смещались относительно соседних карточек.

Добавляли артикул под изображение, ограничивали длинные названия многоточием, меняли цвет подписей, размер цены и положение знака рубля. Исправляли пробелы после двоеточий и перед единицами измерения, оформление слэша и межстрочные интервалы.

Фотографии без нежелательного обрезания

Корректировали пропорции фотографий в каталоге, каруселях и блоках рекомендаций. Заказчик сравнивал изображение с полной фотографией в карточке: в списках оно могло обрезаться по высоте.

Для мобильного списка согласовали квадратную область изображения и перераспределение ширины между фотографией и описанием. Дополнительно уточнялись положение кнопки относительно нижнего края фото и размещение наличия под изображением.

Исправили обрезанное изображение в блоке «Рекомендуем» корзины. Там же привели цену пряжи к стоимости за 100 г.

Зачёркнутые цены и скидочные ярлыки

Исправляли формат зачёркнутой цены в мобильной карточке, её исчезновение у акционных товаров и появление у товаров без скидки. Оформление обычной и зачёркнутой цены согласовывали между плиткой и списком.

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

Кнопки покупки и штучный ассортимент

Восстановили мобильную кнопку добавления в корзину. Для инструментов и аксессуаров исправили недоступную покупку при остатке в одну штуку, нулевую цену в карточке и пустое поле количества вместо единицы.

После добавления товара кнопка должна возвращаться к согласованному состоянию «В корзину». Исправляли переход в режим, при котором повторное нажатие добавляло один грамм без выбора нужного веса.

Поиск, шапка и отдельные нарушения вёрстки

Убрали неожиданно появившийся блок «Все категории» справа от строки поиска: он смещал сравнение, избранное и корзину. Исправляли положение логотипа, подписи под ним и отдельных товарных страниц.

В мобильных карточках восстанавливали исчезнувший значок избранного, а в компьютерной версии корректировали положение избранного и сравнения. Для пустой корзины сделали нейтральное отображение нулевого счётчика по аналогии с соседними элементами.

Увеличение фотографии

В сопровождении обсуждалась работа увеличения изображения и отдельные случаи, когда фотография не открывалась в Safari на Mac. Часть ошибок не удавалось повторить при проверке.

На позднем этапе по отдельному принятому заданию отключили функцию лупы в компьютерной карточке товара. Это итоговая настройка конкретного элемента, а не заявление о переработке всех способов просмотра фотографий.

Главная страница, промобаннеры и информационные разделы

Текстовый заголовок и изображение баннера

Переработали главный баннер: изображение бобин располагается отдельно от текстового блока, а заголовок «Интернет-магазин товаров для вязания» выводится текстом. Под ним размещается редактируемое описание преимуществ и особенностей магазина.

Согласовывали положение изображения, заголовка и подзаголовков, цвет текста и расстояния между блоками. Первоначальное разделение строк по дефисам позднее заменяли более удобным отображением введённых переносов.

Доработали сохранение структуры текста баннера, полуторный межстрочный интервал и использование простого HTML-оформления. Заказчику показали, как менять текст самостоятельно.

Разные промобаннеры для компьютера и телефона

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

В настройках мобильной витрины задаются ID нужных промоблоков. Изображение подстраивается под ширину экрана с сохранением пропорций; для одного слайдера требовалось готовить согласованные по размеру картинки.

Исправили изменение размера подзаголовка после поворота телефона: после возврата в вертикальное положение он не должен оставаться увеличенным. Отдельный более ранний запрос о непоявлении новых промоакций в слайдере не имеет самостоятельной отметки о завершении.

Карусели «Новинки», «Хиты» и «Скидки»

Настраивали карусели и их заголовки, расширяли кнопки, делали переходы активными, перемещали «Скидки» под «Хиты». Стрелки выравнивали симметрично, а позднее приводили к оформлению стрелок в блоке «Также рекомендуем посмотреть».

После обсуждения удаления плашки «Новинки» заказчик решил сохранить её, поскольку удаление затрагивало связанный слайдер. В кейсе это отражает принятое решение, а не незавершённое удаление.

Плашки товарных направлений

Добавили быстрые переходы к пряже, спицам, тканям, кружеву, тесьме и лентам, резинкам, изделиям и подарочным сертификатам. Исправляли адреса отдельных ссылок и восстанавливали плашку «Спицы».

Для страницы «Товары для шитья» подготовили плашки «Ткани», «Кружево», «Аппликация», «Тесьма и лента», «Резинки» и «Украшения». Позднее «Тесьму» и «Ленту» разделили на самостоятельные переходы.

Добавляли изображения для «Шитья» и «Аксессуаров для нижнего белья», а в разделе резинок — переходы к тканым и усиленным вариантам. Заказчику показали управление меню и изображениями через дополнительные параметры категорий.

Страницы покупки, оплаты, доставки и вопросов

Интегрировали информационные страницы по предоставленной вёрстке. Для раздела вопросов объяснили распределение записей по группам, для инструкции о покупке — добавление изображений через файловый менеджер и использование их адресов в шаблоне.

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

В мобильное меню добавили строку «Каталог», корректировали порядок контактов и отзывов. Позднее в раздел «Инфо» добавили «Отзывы» между контактами и картой сайта.

Рекомендации, избранное и сравнение товаров

Другие цвета и сопутствующие предложения

Разделили блоки «Этот товар в другом цвете» и «Также рекомендуем посмотреть», исключив повторение одних и тех же товаров между ними.

Для мерных товаров привели заголовки блоков к общему оформлению и добавили единицу цены за метр. Восстанавливали формат описания рекомендованных товаров по образцу каталога.

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

Избранное без дублирования

Исправили размножение товаров при добавлении в избранное и неверное название «Поиск» в хлебных крошках этого раздела. Отдельно восстанавливали кнопку избранного в мобильной карточке.

Сравнение с корректной ценой

Привели товарный блок сравнения к оформлению каталога: цена за 100 г для пряжи, согласованные подписи и хлебные крошки. Формулировку «Различные» заменили на «Отличия» в обеих версиях сайта.

Промежуточную страницу «Списки сравнения» после обсуждения сохранили. Она группировала товары по типам с разными характеристиками; заказчик решил не объединять всё в один несопоставимый список.

В карточках также убрали пустой прямоугольник-ссылку в блоке тегов у товаров, которым теги не назначены.

Корзина и оформление заказа с нестандартным количеством

Выбор веса из каталога

Настроили открытие дополнительного окна из каталога, чтобы перед добавлением покупатель мог выбрать вес или количество. Позднее восстанавливали этот сценарий, когда товар стал добавляться напрямую без окна.

Исправляли неверный шаг кнопки увеличения и состояния после добавления: повторное нажатие не должно обходить выбор и добавлять неподходящую единицу.

Изменение и удаление позиций

Восстанавливали изменение количества и удаление товаров из корзины. Особое внимание уделялось закончившейся позиции: если её нельзя удалить, покупатель не может продолжить оформление остальных товаров.

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

Мобильная корзина по макету

Переработали расположение элементов мобильной корзины: увеличили заголовок, перенесли удаление в правый верхний угол товарного блока, уточнили положение количества и цены при составе в одну или две строки.

Изменили кнопку применения промокода, убрали ненужные иконки способов оплаты и восстановили отступ перед информацией о скидке. Исправляли смещения у акционных товаров.

Поле промокода упростили: убрали предварительный шаг «У меня есть купон», оставив ввод и применение. После последующих сбоев возвращали согласованную подпись «Промокод» вместо «Код купона».

Повторное создание заказа после ошибки

В отдельной серии обращений покупатель получал ошибку на последнем шаге, товары оставались в корзине, и повторное подтверждение создавало ещё один заказ. Некоторые такие заказы поступали без адреса и способа доставки.

Случаи встречались при выборе ПВЗ, предоплаты и оплаты при получении. Также был описан проход к следующему шагу без понятного для покупателя выбора доставки.

Для диагностики обсуждалась проверка на стандартной теме и последовательное отключение плагинов на тестовой витрине. Подтверждённое окончательное устранение всей этой серии ошибок в документе отсутствует.

Редактирование количества менеджером

Разбирали ограничение увеличения количества уже оформленного заказа: после списания выбранного веса проверка ориентировалась на оставшийся свободный остаток, не учитывая объём внутри самого заказа. Обсуждались настройки момента списания, но отдельное исправление алгоритма не подтверждено.

Ещё одно обращение касалось невозможности установить 2,1 м при редактировании заказа в административной панели. Оно сохранено как самостоятельная задача без отмеченного результата.

СДЭК, Почта России и Boxberry: вес, тарифы и пункты выдачи

Расчёт доставки по реальному весу

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

После перехода на одну базовую единицу требовалось согласовать количество в граммах с весом, передаваемым доставке. На тестовой копии отдельно исправляли неверный тариф и отсутствие расчёта СДЭК.

Накладная СДЭК для веса свыше 999 г

При покупке, например, 1500 г пряжи интеграция могла воспринимать это как 1500 штук. Ограничение поля количества мешало сформировать накладную.

Доработали заполнение отправления: фактический вес должен попадать в поле веса, а не превращаться в число отдельных изделий. Проверяли передачу этих значений из административной формы в накладную и повторно исправляли ошибку при весе более 999 г.

По отдельному заданию изменяли заполнение поля «Цена 1 шт» при сохранении независимого значения «С покупателя за 1 шт». Это настройка конкретной формы отправления, а не изменение розничной цены товара.

Пункты выдачи и адрес только для курьера

Скрыли адресные поля при выборе пункта выдачи СДЭК и показывали их для курьерской доставки. Логика должна была сохраняться и после возврата с последующего шага оформления.

Под вариантами предоплаты и оплаты при получении добавили раскрываемую информацию о ПВЗ и сроках. Расширили поля выбора и согласовали оформление адреса и даты в компьютерной и мобильной версиях.

Карта ПВЗ в оформлении заказа

Добавили выбор ПВЗ на карте непосредственно на шаге доставки по аналогии с доступным интерфейсом в административной панели. В мобильной версии ссылка «Карта» размещается рядом с предложением выбрать пункт выдачи или курьера.

Настроили её оформление, добавили стрелки в поле выбора и исправили закрытие карты на телефоне. Отдельно подключили автоматическое обновление базы офисов СДЭК, чтобы список не ограничивался устаревшими пунктами.

Страница «Доставка / Оплата»

Изменили представление способов доставки и оплаты по макетам для компьютеров и телефонов. Дорабатывали шрифт вариантов предоплаты и оплаты при получении, высоту выбора ПВЗ и насыщенность текста.

Исправили мобильное раскрытие «Подробнее» для Boxberry и СДЭК. Для Почты России в этом интерфейсе пункты на карте выводить не требовалось.

Предварительная оценка в карточке товара

Дорабатывали блок предварительной стоимости и срока доставки, а также возможность использовать статический информационный вариант или вывод плагина «Информация о доставке и оплате». Переключение согласовывалось на уровне отдельных шаблонов; на информационной странице плагин должен был оставаться доступным.

Меняли цвет ссылок, насыщенность цены, выравнивание даты и стоимости, поведение подсказки «?», а также переход к пунктам доставки. В расчёте учитывался определённый город.

Разбирали расхождение между предварительной оценкой и оформлением: разработчик плагина указал, что карточка запрашивала расчёт для одной учётной единицы, а корзина — для выбранных 100 единиц. Отдельной отметки о полном устранении этого расхождения нет.

Позднее запросили новый дизайн блока и формат стоимости «от …» вместо диапазона, вместе с изменением расположения описания товара. Завершение этой последующей переработки отдельно не подтверждено.

Почта России и бесплатная доставка

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

Настроили бесплатную доставку при заказе от 3000 рублей в рамках соответствующего запроса, включая настройку, которую заказчик не мог найти для СДЭК. Это условие конкретной акции, а не неизменное правило на весь период работы магазина.

Позднее исправили ошибку создания отправления СДЭК из административной панели. Отдельное обращение о невозможности удалить подготовленное отправление не имеет зафиксированного результата.

Robokassa: кнопки оплаты и разделение стоимости доставки

Разные суммы «Итого» и «К оплате»

На раннем этапе для варианта «СДЭК / Предоплата» доставка оплачивалась отдельно при получении. Требовалось сохранить её реальную стоимость в заказе, но не включать в сумму, направляемую в Robokassa.

Для этого использовались отдельные значения: итоговая стоимость заказа с доставкой и сумма к предварительной оплате без неё. Добавили пояснение об отдельной оплате доставки, согласовали вывод в административной панели, личном кабинете и на подтверждении заказа.

Восстанавливали эти поля после обновлений, когда доставка снова становилась нулевой или Robokassa получала неподходящую сумму.

Возврат к единой сумме заказа

Позднее заказчик отказался от разделения: доставку снова потребовалось включать в оплату вместе с товарами. Убрали отдельное «Итого к оплате», сохранив одно итоговое значение в административной панели и на витрине.

Прежнюю схему просили не уничтожать полностью, чтобы при необходимости к ней можно было вернуться. Для предоплачиваемых вариантов доставки добавили сообщение, что оплата производится после согласования с магазином.

Название соответствующего шага изменили на «Доставка / Оплата». Удаление отдельного шага оплаты обсуждалось отдельно, поскольку затрагивало связанные сценарии.

Оплата из личного кабинета

Для заказов в согласованном статусе ожидания оплаты добавили кнопку «Оплатить» под суммой. В дальнейшем восстанавливали её отображение и сохранение при раскрытии подробностей заказа.

Проверяли включение доставки в передаваемую сумму: в одном из обращений расхождение перестало воспроизводиться, поэтому оно не описывается как отдельная подтверждённая программная доработка.

Кнопка оплаты в email-уведомлении

В письме об ожидании предоплаты заменили ссылку на кнопку прямого перехода в Robokassa без обязательного входа в кабинет.

После первоначальной реализации возникали дополнительные замечания: кнопка не отображалась у части получателей, платёжный сервис сообщал об отсутствии суммы, а длинная ссылка в другом сценарии открывала 404. Эти ограничения не позволяют утверждать, что все описанные варианты оплаты из писем получили окончательно подтверждённое решение.

Возврат после успешной оплаты

Устранили предупреждение о небезопасном переходе после оплаты: в настройках Robokassa использовался адрес возврата по HTTP вместо HTTPS.

Затем заказчик самостоятельно создал страницу «Успешная оплата» и указал её в настройках сервиса. Для мобильной версии осталось отдельное пожелание убрать повторение заголовка; результат этой правки не отмечен.

Вход по телефону, регистрация и личный кабинет

Понятный переход между входом и регистрацией

После перехода от логина с паролем к телефону и SMS-коду дорабатывали подсказки и кнопки для разных состояний пользователя.

Для незнакомого номера добавили заметную кнопку регистрации. Когда система узнаёт существующий аккаунт и показывает поле кода, дополнительная регистрация не требуется. Кнопки размещали в согласованном порядке с понятным разделением.

Если пользователь пытается повторно зарегистрироваться с уже существующими данными, вместо бесполезной попытки регистрации предусмотрели переход «Вход» и поясняющий текст. Изменения выполнялись для компьютеров и телефонов.

Тексты мобильного кабинета

Сократили формулировку «Вход в существующий аккаунт» до «Вход», привели сообщение о неизвестном контакте и необходимости регистрации к единому цвету. Мобильный кабинет также дорабатывали по отдельным макетам.

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

Новый телефон при уже существующем email

Разбирали конфликт старых аккаунтов: email уже зарегистрирован, но телефон был введён с ошибкой, поэтому система воспринимает корректный номер как новый.

Заказчик предложил либо выявить такие записи, либо разрешить создание нового аккаунта с повторяющимся email и затем разбирать дубли в административной панели. Изменения затрагивали бы логику аккаунтов; их завершение в документе не подтверждено.

Предложения браузера сохранить старый пароль рассматривались отдельно. Наличие настройки автозаполнения в поле не было представлено как гарантия отключения подсказок во всех браузерах.

Маска номера для других стран

Последнее требование к телефонному полю — сохранить работающую российскую маску +7 и добавить выбор «Россия» или «Другие страны». При втором варианте фиксированная маска должна отключаться для ручного ввода международного кода.

Этот пункт поступил на оценку; отметки о его внедрении в истории нет.

Информация в «Моих заказах»

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

Уточнили единицы и формат количества, добавили длину в 100 г и изменили насыщенность шрифта. При этом мерные товары должны сохранять фактическое дробное количество, а не округляться до единицы.

Скидки, промокоды и исключение подарочных сертификатов

Скидка за объём и постоянному покупателю

В магазине использовались разные основания скидки: 5% за объём от согласованной суммы, 10% постоянному покупателю после установленного количества заказов и индивидуальные уровни 15% или 20%.

Основное правило — постоянная скидка поглощает скидку за объём, а не складывается с ней. В раннем задании максимальную скидку ограничивали 10%, используя либо постоянный уровень, либо сочетание объёма и купона.

Позднее правила расширили: промокод должен прибавляться к применимой скидке — объёмной или постоянной. В примерах задания постоянные 10%, 15% и 20% вместе с купоном 10% давали 20%, 25% и 30% соответственно.

Настройку обсуждали через «Гибкие скидки». В истории сохранились дополнительные замечания к отдельным комбинациям и загрузке настроек, поэтому принятие общей схемы не подменяет подтверждение каждой её проверки.

Корректное сообщение о максимальной скидке

В плагине «Покажите ваши скидки» исправили информацию для постоянного покупателя с уровнем 10%. Ему не должно выводиться сообщение о максимальных 5% за заказ.

Правку восстанавливали при повторном обращении. Она относится к объяснению действующей скидки в корзине и не заменяет сам расчёт правил.

Сертификаты без скидок

Для подарочных сертификатов настроили исключение из скидок. В «Гибкие скидки» добавили запрещающее правило.

Дополнительно изменили применение скидки: вместо распределения общей скидки заказа на все позиции использовали расчёт по отдельным товарам. Это было важно, чтобы сертификат не получал часть скидки вместе с остальным содержимым корзины.

Обработка заказов, печатные ярлыки и отчёты

Автоматическое завершение после вручения

Настроили перевод заказа в «Выполнен» после получения посылки покупателем. Первоначальный сценарий использовал проверку по cron один раз в день, а не мгновенное изменение в реальном времени.

Работа затрагивала СДЭК и Почту России, включая отдельные варианты событий вручения. Позднее добавили Boxberry с предоплатой и оплатой при получении, а также восстанавливали автоматическую смену статуса после сбоев.

В декабре 2025 года поступило повторное обращение о неработающем завершении и о заказах Почты России, попадавших в «Готовые к отправке» вместо «Отправленных». Закрытие этих последних замечаний не подтверждено.

Статусы сайта и маркетплейса

Разбирали дублирующиеся статусы «Возврат» и выполняли согласованное упрощение их списка. При этом зависимость stockupdate от конкретного отдельного статуса не была установлена.

Заказчик также запросил разделение завершённых заказов сайта и Ozon на «Выполнен» и «Выполнен Ozon». Результат именно этого изменения в документе не указан.

Отдельный сбой загрузки статуса и выбора Boxberry в редактируемом заказе к моменту повторной проверки перестал воспроизводиться; конкретная программная причина не зафиксирована.

Вес и количество в ярлыке из заказа

Доработали плагин печати ярлыков, чтобы в строку веса попадало фактически заказанное количество, а не базовый вес в 1 г. Изменения восстанавливали после обновлений, когда строка исчезала или снова использовала неподходящее значение.

Для заказов с товарами в граммах и метрах отдельно исправили наличие строки «Количество». В шаблонах устранили лишние промежутки при многострочном составе и длинном названии производителя.

Для заказов Ozon подготовили отдельный шаблон ярлыка с весом фасовки и настройкой его выбора, чтобы не использовать весовую логику обычного товара сайта.

Отчёт о продажах с отключёнными способами оплаты

Исправили расхождение между отчётом и фактическими заказами. Один из заказов не учитывался из-за отключённого способа оплаты.

В выборку добавили возможность учитывать такие способы, чтобы исторические продажи не исчезали из отчёта только из-за изменения текущих настроек оплаты.

Выгрузка складских данных для страховой

Подготовили разовую выгрузку перечня товаров на складе и их стоимости с общей суммой. Стандартный экран отчёта не предоставлял нужного скачивания.

После проверки исправили неточности и добавили колонку «Артикул». Задача решалась как конкретная передача данных, а не как разработка новой постоянной системы отчётности.

Рассылки, обратная связь, отзывы и формы согласия

Восстановление email-уведомлений

Неоднократно восстанавливали отправку уведомлений о статусах заказов. В обращениях рассматривались доставка на Gmail, настройки SMTP, результаты антиспам-проверок и различия между тестовым письмом и рассылкой выбранным получателям.

В одном из этапов сторонний специалист менял IP и исправлял SPF, после чего отправку из административной панели проверяли отдельно. Эти действия разделены по ответственности, без приписывания всей почтовой настройки одному исполнителю.

Позднее исправили неотправлявшиеся тестовые сообщения и рассылку по дополнительным адресам. Отдельное обращение по уведомлениям о недоставке, содержавшим данные для входа, осталось без подтверждённого вывода о причине.

Изображения и шаблоны рассылок

Доработали работу с изображениями в шаблонах: после замены картинки письмо могло показывать старую либо скрытую версию. Заказчику также показали добавление блока изображения при создании нового шаблона.

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

Обратный звонок и контактные элементы

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

Позднее заказчик отключил «Обратный звонок (lite)» из-за спама и установил другой плагин. Возврат кнопки для нового модуля был запрошен отдельно; завершение этой конкретной интеграции не отмечено.

Отзывы с главной страницы

Добавили заметную кнопку «Написать отзыв» на компьютерной главной странице. Задача заключалась в более доступном входе в существующий сценарий отзывов.

Для мобильной версии добавили раздел «Отзывы» в информационное меню. Детали поведения после отправки обсуждались отдельно; новая собственная система отзывов в этой работе не заявлялась.

Cookie и независимые согласия

Добавили уведомление об использовании cookie при первом посещении и ссылку на политику конфиденциальности. Текст исправили по замечаниям и вынесли в редактируемый блок сайта.

В формах предусмотрели изначально неотмеченное согласие на обработку персональных данных со ссылками на два разных документа. Отдельно разместили неотмеченный пункт согласия на рекламные предложения и новости по email.

Опубликовали предоставленную заказчиком оферту и добавили ссылку в подвал. Ранее также восстанавливали неработающую ссылку на политику обработки персональных данных.

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

Технические SEO-доработки каталога и карточек товаров

Заголовки и метаданные из характеристик

В отдельном SEO-задании определили шаблоны для товаров-пряжи с использованием наименования, производителя, состава, цвета и длины нити. Также требовалось исправить подстановку цвета в заголовке карточки.

Для описания в поиске предлагалось раскрывать итальянскую бобинную пряжу, заказ нужного количества с размоткой на конусы и доставку. Эти требования относились к соответствующим товарам, а не к тканям, кружеву и инструментам.

Отдельной отметки о завершении всех новых шаблонов метаданных в этой постановке нет. При этом выполненные изменения предметных названий и вывода характеристик описаны в самостоятельных разделах кейса.

Тексты категорий и SEO-фильтр

Скрыли повторяющийся текст на последующих страницах пагинации и исправили выравнивание текста SEO-страниц относительно карточек каталога: он не должен прилипать к колонке фильтров.

В ходе проверки также сообщалось о пропавшем тексте при сохранённом содержимом в административной панели. Итог именно этого дополнительного замечания отдельно не отражён.

Для блоков, создаваемых SEO-фильтром, обсуждали настройку cron. Без формирования данных статический блок не мог автоматически получить нужное наполнение; перенос внешнего вида и запуск генерации рассматривались как разные действия.

Canonical и настройки пагинации

По заданию SEO-специалиста устраняли дублирующиеся теги rel="canonical" и разбирали их отсутствие на первых страницах и на страницах, создаваемых SEO-фильтром.

В исходном задании также была указана канонизация последующих страниц на первую, а затем удаление meta noindex. Эти пункты сохранены как исторические требования проекта, а не универсальная рекомендация: обычные страницы пагинации с разными товарами не являются полными дублями первой страницы.

Исправление повторяющегося тега отмечено выполненным; у отдельного последующего пункта об удалении noindex нет самостоятельного подтверждения завершения.

Ссылки карточек и меню

Расширили кликабельную область товарной карточки: переход не должен зависеть только от наличия заголовка или нажатия на фотографию. По заданию убрали атрибуты title у соответствующих ссылок.

Для ссылок «Новинки» и «Скидки» в главном меню добавили rel="nofollow" по согласованному SEO-заданию. Эти изменения описывают конкретную настройку проекта без обещания роста позиций от одного атрибута.

Также дорабатывали внутренние переходы к подкатегориям, хлебные крошки и корректность адресов, чтобы структура навигации соответствовала ассортименту магазина.

Обновления Shop-Script, сервер и производительность

Тестовая копия перед существенными изменениями

Создавали копию магазина на тестовом поддомене и использовали отдельную витрину для проверки темы и функциональных изменений. Массовое преобразование весовых товаров также выполнялось на копии.

При обновлении Инсталлера возникла несовместимость с версией PHP. Подготовили отдельное окружение для последовательного обновления системы, приложений и согласованных плагинов.

Сохранение нестандартной логики после обновлений

Часть функций зависела от изменений в Shop-Script и сторонних плагинах: дробные метры, сумма к оплате, печатные ярлыки и распределение остатков. После обновлений эти изменения приходилось переносить или восстанавливать.

Отдельно сопровождали обновление, связанное с ошибкой соответствия названия цвета его коду. Цена за 100 г находилась в теме, а обработка дробного количества — также в программной части магазина, поэтому объём переноса определялся по конкретной функции.

Для stockupdate разбирали повторные остановки пересчёта. Отсутствие журналов не позволило достоверно определить, когда именно и по какой причине остановилась обработка в одном из обращений.

Скорость загрузки и качество фотографий

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

Заказчик отдавал приоритет качеству фотографий. После экспериментов компьютерные изображения вернули к прежнему размеру; поэтому эти обсуждения не представлены как подтверждённое уменьшение всех изображений без потери качества.

В отдельной выполненной задаче настроили кеширование на хостинге и параметры быстродействия. Предложение объединить все шаблоны в один не имеет подтверждения реализации. Итоговых сопоставимых измерений «до/после» в документе нет.

Остановки сайта и восстановление базы

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

Для последующей диагностики хостинг установил средство записи нагрузки atop. Точная первоначальная причина одного из сбоев не была установлена из-за отсутствия необходимых журналов за соответствующий промежуток.

Нехватка дискового пространства

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

Затем в документе сообщалось об очистке журналов серверным программистом заказчика и уменьшении занимаемого сайтом объёма. Эти действия не приписываются разработке темы и не используются как доказательство устранения всех последующих серверных проблем.

Дополнительные требования и обращения без подтверждённого завершения

Помимо выполненных изменений, в сопровождении остались отдельные задачи для дальнейшей проверки: международная маска телефона, фильтр цены за 100 г, автоматическое объединение фильтров разных категорий в поиске и настройка видимости категорий по типам товара.

К повторным эксплуатационным обращениям относятся пересчёт оригинала после отмены заказа Ozon, дублирование заказов при ошибке оформления, редактирование дробного количества менеджером, поздние сбои автоматического завершения отправлений и группировки заказов Почты России.

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

Также обсуждалась проверка плагина «Размер для веса», источника используемой им характеристики и связанного предупреждения в доставке. Короткое обращение по сбою отображения графика не содержит достаточного текстового описания изменения и результата, поэтому конкретное исправление ему не приписывается.

Ранее снятый заказчиком вопрос о предварительном сроке доставки Почты России не включён в выполненные доработки. Аналогично сохранение списков сравнения и плашки «Новинки» отражает решение оставить существующее поведение, а не отказ системы выполнить изменение.

Результаты развития Filato Italiano

Проект показывает доработку магазина, где стандартной продажи «одна штука — одна цена» недостаточно. Для Filato Italiano связали весовые и мерные единицы, представление цены, выбор количества, карточки маркетплейсов, складские правила и оформление отправлений.

Среди подтверждённых работ — переход к одному базовому артикулу пряжи, дробное количество с разными шагами, продажа фиксированного остатка, разработка и развитие stockupdate, поддержка заказов Wildberries в распределении остатков, доработки СДЭК, ярлыков, статусов и отчётов.

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

Нужна доработка магазина со сложными единицами продажи?

Для обсуждения похожей задачи пришлите ссылку на сайт и несколько примеров товаров. Важно указать, что продаётся граммами, метрами или упаковками, как должен рассчитываться остаток и какие данные необходимо передавать в доставку и маркетплейсы.

Подробнее об услуге — программирование и доработка интернет-магазинов на Webasyst. Другие примеры представлены в разделе доработки и техническая поддержка сайтов.

Контакты

Телефон для связи+373 684 33 335
Закажите БЕСПЛАТНУЮ
консультацию по созданию сайта
Проверочный код (изображение)