Moto85.ru – интернет-магазин мотоэкипировки и аксессуаров. За время своего существования бизнес вырос, в разы увеличил ассортимент продукции, стал официальным дилером нескольких брендов. Магазин достаточно популярен в мотосреде благодаря индивидуальному подходу, возможности как покупки имеющихся на складе товаров, так и заказов уникальных позиций у производителей по разумным ценам. Созданный сайт перестал отвечать современным требованиям как с точки зрения дизайна и удобства использования, так и скорости работы. Кроме того, его уже невозможно было поддерживать. «Старый сайт мы в принципе уже не могли обновить на новую версию Битрикс из-за большого количества доработок, которые не документировались и нигде не хранились централизованно. Мы даже опасались его дорабатывать, потому что из-за этого регулярно что-то падало». (Заказчик) Специалисты «Логемы» провели анализ имеющегося решения и составили список необходимых работ по его модернизации: настройка нового сервера; обновление версий технологического стека («Битрикс» и PHP); внедрение современного готового решения «Аспро: Максимум»; интеграция с учетной системой «МойСклад»; перенос контентной части сайта с сохранением содержания, тегов, ссылок и фильтров; доработка дизайна готового решения; в процессе переноса важно сохранить SEO-настройки и места в поисковых выдачах. Работа с клиентом велась через выделенного менеджера, который помогал создавать задачи, контролировать их распределение среди программистов, исполнение, перенос и тестирование. «Весь процесс разработки фиксируется в системе YouTrack: список задач в работе, их статус и прогресс выполнения. Не было формата «мы сделали – вы там сами проверяйте». Это был один из критериев выбора «Логемы» как подрядчика». (Заказчик) Была установлена свежая версия «Битрикс» и обновлен PHP до версии 8.0. Это позитивно повлияло на скорость работы сайта, безопасность и доступность технической поддержки. Обновление PHP также дает возможность использовать новые функции и современные модули, работающие только с восьмой и выше версиями. С их помощью проще организовать внешние интеграции – на данный момент выполнена интеграция с CRM «МойСклад», но в будущем можно работать и с иным ПО. На старом сайте вся конфигурация настраивалась через ISPmanager. Хотя графический интерфейс этого ПО интуитивен и понятен, для этой задачи он избыточен, поскольку влияет на скорость работы, а настройки, включая настройки домена, почты, nginx и httpd разбросаны по разным разделам, и иногда находятся вне самого ISPmanager. Поэтому наши специалисты решили настраивать конфигурацию нового сервера вручную, по стандартной схеме. Лимиты на ресурсы были установлены в соответствии с используемым «железом» и проектом. В результате система «стабилизирована по памяти», что означает что никакой разумный поток запросов не заставит клиентов увидеть ошибки, в худшем случае они будут слишком долго ждать ответа и дождутся только истечения таймаута. Для мониторинга в реальном времени был установлен Zabbix, добавлена конфигурация для мониторинга хоста со стороны нашего Zabbix-сервера, прикреплены стандартные шаблоны для мониторинга ресурсов, проверки robots.txt и наличия http-авторизации. Набор проверок включает в себя проверки уровня ОС, уровня используемого софта, проверки работы конечного сайта и критических бизнес-функций (например наличие и доступность robots.txt по HTTP, возможность увидеть каталог товаров и корзину). Использованы штатные средства BitrixVM (скрипт menu.sh, let's encrypt); включен редирект с http-схемы на https. Конфигурация msmtprc-клиента для делегирования отправки почты почтовому серверу заказчика. Настройка бэкапа производилась с использованием стандартных инструментов Bitrix Framework. Резервное копирование проекта выполняется ежедневно в автоматическом режиме; это делается ночью, когда нагрузка на сайт минимальная. Процесс запускается с использование агентов на cron, резервная копия хранится в папке сайта. Архивируются: база данных, ядро и публичная часть. Для экономии дискового пространства настроено удаление локальных резервных копий, если их больше двух. «Аспро: Максимум» – универсальное решение для создания интернет-магазинов на базе «Битрикс», обладающее отличным соотношением цена/качество. Содержит большое количество готовых шаблонов и инструментов для их настройки, что позволяет не разрабатывать с нуля типовые компоненты сайта. В данном случае было проведено несколько кастомизаций «Аспро» под потребности клиента и для решения отдельных локальных задач. Интерфейс Аспро «МойСклад» – SaaS решение для управления торговлей и автоматизации складского учета. В данном проекте оно выполняет роль CRM и учетной системы, где сотрудники магазина работают с товарами, их наличием, ценами. Необходимо было синхронизировать сайт и «МойСклад», чтобы заказы отправлялись в эту систему, а любые изменения товарных позиций автоматически отражались на сайте. Работа с «МойСклад» реализована через API: в сервис отправляется запрос, в ответ он с помощью вебхуков передает все изменения заказа . Также был реализован обработчик события создания заказа: данные передаются в «МойСклад», где формируется заказ. Кроме того, при появлении новых товарных позиций в сервисе они автоматически передаются на сайт и появляются в каталоге в виде позиции с ценой и кратким описанием (анонс). Полное описание и изображения товаров контент-менеджер добавляет в каталог вручную. Стандартную синхронизацию сервиса пришлось дополнить, в частности, убрав ненужные стандартные поля и добавив собственные. Так, было добавлено поле «комментарий менеджера», который не виден клиенту. Этот функционал был реализован с помощью отдельного API․ На сайте имеется обширный раздел «Статьи», в котором собраны уникальные экспертные тексты мотоциклетной тематики, как практические советы для покупателей, так и новости, обзоры, тесты техники. Этот раздел надо было перенести в новую рубрику «Блог» с сохранением изображений, SEO-тегов и фильтров, а также настройкой корректных редиректов ссылок внутри имеющихся статей. Такой перенос логично делился на четыре этапа: перенос данных, перенос тегов, обновление тегов и проверка корректности внутренних ссылок. Первым шагом переноса данных было создание инфоблоков на новом сайте с переносом параметров и свойств (бренд, тип товара, тема статьи) с помощью XML. Для переноса всех элементов (текстов и изображений) с сохранением их свойств был использован стандартный функционал «Битрикс» – Экспорт элементов инфоблока в формате CSV (new). Поскольку тексты на старом сайте были в кодировке Windows-1251, а новый сайт использует UTF-8, после экспорта файл CSV конвертировался. Затем были изменены настройки компонента «Битрикс» Bitrix:news, после чего все данные статей стали отображаться в новом разделе «Блог». Перенос прошел в штатном режиме, проблем на данном этапе не возникло. Проблема второго этапа состояла в том, что на старом сайте теги были реализованы через свойства элементов инфоблоков. При таком решении для их вывода пришлось бы менять код в шаблоне компонента на новом сайте. Более правильным с точки зрения архитектуры решения было использование возможностей решения «Аспро: Максимум»: его верстка компонента Bitrix:news предусматривает вывод поля «Теги» элемента как облака тегов. Это облако позволяет пользователю удобнее искать нужные статьи. Был написан PHP-скрипт, который делает выборку по заполненным свойствам TAGS, после чего переносит их в соответствующее поле. Скрипт выполнился без ошибок, облака тегов появились на детальных страницах. Заказчику был нужен фильтр для удобства навигации и SEO-оптимизации. Конкретных требований было три: отображение фильтра и на странице списка статей, и на странице с текстом статьи; выбранные значения должны сохраняться при переходе между списком и статьей; наличие кнопки «Сбросить» для очистки значений фильтра. Стандартный шаблон фильтра, использовавшегося в разделе «Блог», не подходил, и готовое решение отсутствовало. Было необходимо разработать новый функционал, который бы сохранял установленные значения фильтров в файлах cookie, а при загрузке новой страницы проверял их наличие и автоматически заполнял чекбоксы страницы, если фильтры установлены. Новый шаблон фильтра также потребовал написания и подключения стилей для мобильной версии, необходимых для адаптивной верстки (правильного отображения шаблона на различных разрешениях). Работоспособность и корректность отображения фильтра проверялись вручную с помощью выставления одинаковых параметров на старом и новом сайте. В элементах раздела «Статьи» старого сайта присутствовали абсолютные ссылки, использовавшие полный HTTP-адрес, а не относительный путь. Эти ссылки вели на страницы старого сайта, а поскольку на тот момент контента было много, их ручные поиск и замена не представлялись возможными. На финальном этапе работы потребовалось написать еще один скрипт, который бы делал выборку элементов инфоблока, текст которых содержал любые ссылки. Скрипт с помощью регулярного выражения ищет все вхождения HTML тега в тексте, включая их содержимое, но без учета вложенных тегов .Заказчик
Задача
Обновление технологического стека
Настройка нового сервера
Настройка софта под сайт
Мониторинг
Настройка работы по протоколу TLS/SSL
Настройка исходящей почты
Настройка бэкапа
Внедрение «Аспро»
Одной из таких задач стал вывод на сайте цен со скидкой. У товаров в CRM может быть две цены – стандартная и акционная. Необходимо было выводить на сайте обычную цену зачеркнутой, а актуальной считать цену со скидкой. Одновременно именно вторую цену нужно учитывать в фильтрах, при сортировке, работе с корзиной, в личном кабинете.Интеграция с «МойСклад»
Перенос раздела «Статьи»
Перенос данных
Перенос SEO-тегов
Новый фильтр для статей
Внутренние ссылки
Финальные доработки
Доработка дизайна
Результат