Москондитер

Что нужно онлайн-магазину сладостей в канун Нового года

Правильная поисковая оптимизация ссылок
Отображение всех изображений
Правильная работа фильтров
Хотите так же?

О клиенте

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

Задачи

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

  • блоки со ссылками должны работать нормально с точки зрения SEO (без оборачивания в специальный html-тег <a>, с переходом через JavaScript-код), 
  • отображаются все фото, 
  • фильтр работает правильно,
  • ценник показывает все товары из выбранного диапазона цен,
  • правильно работает фильтр ассортимента, привязанный к кнопке «Подобрать подарки».
фильтрация товаров на сайте магазина кондитерской продукции

Решение

Импорт листингов

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

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

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

Фильтры в каталоге кондитерских изделий

На сайте есть фильтрация подарков по диапазону цен, типу упаковки, весу и типу состава. Она работает через Ajax-модули.

работа фильтра на сайте магазина кондитерской продукции

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

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

работа фильтра на сайте c кондитерской продукцией

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

Изучая вопрос, почему не загружается некоторые иллюстрации, мы решили, что неправильно работает PHP-расширение JD. Оно используется для генерации миниатюр из большого изображения. И в момент этой генерации библиотека выдавала ошибку.

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

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

Что дальше?

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

Также следует переписать JavaScript по Drupal-стандартам. На момент выпуска кейса js-код на сайте не учитывал JavaScript API, который используется в Drupal. Проблемы возникают в таких компонентах, как фильтр, где, используя, JavaScript API Drupal можно написать более гибкий и более стабильный код.

Напишите нам!

Мы регулярно просматриваем не только почту, но и спам. Ваша заявка от нас не ускользнёт.

Напишите нам!

Но сначала правильно заполните обязательные поля.