Разработка сайта на Magento / Adobe Commerce
Отметим: когда SaaS-платформы перестают справляться с нагрузкой, кастомизация упирается в ограничения API. В таких случаях пора смотреть в сторону Magento. Мы проектируем и запускаем enterprise-магазины на этой платформе. Решаем задачи высокой сложности: мультисайт с единой инсталляции, тысячи атрибутов и кастомные бизнес-процессы. За 7 лет мы реализовали 20+ проектов — от небольших магазинов до крупных маркетплейсов с миллионами товаров.
Magento 2 даёт полный контроль над кодом и архитектурой. Вы не ограничены шаблонами и плагинами сторонних разработчиков. Это особенно важно для проектов с уникальными бизнес-требованиями, например, сложная система скидок или интеграция с нестандартным API.
Magento Open Source vs Adobe Commerce
Выбор редакции зависит от масштаба, необходимых модулей и бюджета. Open Source не требует лицензионных отчислений, что даёт экономию до 70% по сравнению с Adobe Commerce. Обе платформы имеют сильные стороны, и мы поможем подобрать оптимальный вариант.
| Характеристика | Magento Open Source | Adobe Commerce |
|---|---|---|
| Лицензия | MIT (бесплатная) | Коммерческая |
| Хостинг | Self-hosted | Self-hosted или Cloud |
| B2B-модуль | Нет | Встроен |
| Page Builder | Базовый | Расширенный |
| Staged Content | Нет | Есть |
| Customer Segments | Нет | Есть |
| Live Search | Нет | Есть (SaaS) |
| Product Recommendations | Нет | Есть (AI-based) |
| Adobe Experience Cloud | Нет | Интеграция |
Для большинства проектов Open Source даёт всё необходимое. Adobe Commerce оправдан при B2B-сценариях с сложным ценообразованием, персонализацией или интеграцией с Adobe Analytics.
Почему стоит перейти на Magento 2?
Magento 1 перестал получать обновления несколько лет назад. Magento 2 полностью переписан: использует PHP 8, Dependency Injection, Plugin System, гибкий GraphQL API. Производительность выше благодаря Varnish, Redis, Elasticsearch — страницы с кешированием загружаются в 10 раз быстрее. Модульная архитектура позволяет добавлять любую функциональность без взлома ядра.
Рекомендованные версии компонентов
| Компонент | Версия |
|---|---|
| PHP | 8.1–8.3 (оптимально 8.2) |
| MySQL/MariaDB | 8.0 / 10.6 |
| Elasticsearch/OpenSearch | 8.x / 2.x |
| Redis | 7.x |
| RabbitMQ | 3.11+ |
| Nginx/Apache | 1.24+ / 2.4 |
| Varnish | 7.x (опционально) |
| CPU (dev/prod) | 4 / 8 cores |
| RAM (dev/prod) | 8 / 16 GB |
Полный список системных требований
Magento 2 требует PHP 8.1–8.3, MySQL 8.0 или MariaDB 10.6, Elasticsearch/OpenSearch, Redis, RabbitMQ для очередей. Минимально 4 CPU и 8 GB RAM для разработки, для продакшена — 8 CPU и 16 GB RAM.Техническая реализация
Архитектура модульной системы
Magento построен на модулях. Каждый модуль располагается в app/code/Vendor/Module/ и содержит:
-
Block/— PHP классы для представления (устаревает) -
Controller/— обработчики HTTP-запросов -
etc/— конфиги:module.xml,di.xml,routes.xml,events.xml -
Model/— бизнес-логика -
Plugin/— interceptors (before/after/around) -
Observer/— подписка на события -
Setup/— установочные скрипты и data patches -
view/frontend/— layout XML и phtml-шаблоны
Dependency Injection и Plugin
Вместо new — инъекция через конструктор. В di.xml задаются предпочтения и плагины:
<preference for="Magento\Catalog\Model\Product" type="MyCompany\Catalog\Model\Product"/>
<type name="Magento\Catalog\Model\ResourceModel\Product\Collection">
<plugin name="mycompany_catalog_collection_plugin" type="MyCompany\Catalog\Plugin\ProductCollectionPlugin" sortOrder="10"/>
</type>Пример плагина с after-методом:
namespace MyCompany\Catalog\Plugin;
use Magento\Catalog\Model\ResourceModel\Product\Collection;
class ProductCollectionPlugin
{
public function afterLoad(Collection $subject, Collection $result): Collection
{
foreach ($result as $product) {
$margin = ($product->getPrice() - $product->getCost()) / $product->getPrice() * 100;
$product->setData('margin_percent', round($margin, 2));
}
return $result;
}
} Кастомный атрибут продукта
Data patch добавляет атрибут "Срок доставки (дней)" без изменения ядра:
// Setup/Patch/Data/AddProductAttributes.php
namespace MyCompany\Catalog\Setup\Patch\Data;
use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Catalog\Setup\CategorySetupFactory;
class AddProductAttributes implements DataPatchInterface
{
public function __construct(
private readonly CategorySetupFactory $categorySetupFactory,
private readonly \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup,
) {}
public function apply(): void
{
$setup = $this->categorySetupFactory->create(['setup' => $this->moduleDataSetup]);
$setup->addAttribute('catalog_product', 'delivery_days', [
'type' => 'int',
'label' => 'Срок доставки (дней)',
'input' => 'text',
'required' => false,
'visible' => true,
'user_defined' => true,
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => true,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => '',
]);
$setup->addAttributeToSet('catalog_product', 'Default', 'General', 'delivery_days');
}
public static function getDependencies(): array
{
return [];
}
public function getAliases(): array
{
return [];
}
} GraphQL API Magento
Для headless-фронта используем встроенный GraphQL:
query GetProduct($urlKey: String!) {
products(filter: { url_key: { eq: $urlKey } }) {
items {
id
sku
name
price_range {
minimum_price {
regular_price {
value
currency
}
final_price {
value
currency
}
discount {
amount_off
percent_off
}
}
}
... on ConfigurableProduct {
configurable_options {
label
values {
label
uid
}
}
variants {
attributes {
label
uid
}
product {
sku
stock_status
price_range {
minimum_price {
final_price {
value
}
}
}
}
}
}
}
}
} Типичный стек разработки
composer create-project --repository-url=https://repo.magento.com/ \
magento/project-community-edition=2.4.7 my-magento
bin/magento setup:install \
--db-host=localhost \
--db-name=magento \
--db-user=magento \
--db-password=secret \
--base-url=https://magento.local/ \
--admin-firstname=Admin \
--admin-lastname=User \
[email protected] \
--admin-user=admin \
--admin-password=Admin123! \
--language=ru_RU \
--currency=RUB \
--timezone=Europe/Moscow \
--use-rewrites=1 \
--search-engine=opensearch \
--opensearch-host=localhost \
--opensearch-port=9200
# После изменений
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy ru_RU en_US -f
bin/magento cache:flush
Пошаговая инструкция: создание кастомного модуля
- Создайте директорию
app/code/Vendor/Module/etc/и файлmodule.xml. - Объявите зависимости в
composer.jsonиregistration.php. - Определите маршруты в
routes.xml. - Реализуйте
Controller,Model,Blockпо необходимости. - Добавьте
di.xmlдля плагинов или предпочтений. - Запустите
bin/magento setup:upgradeдля установки.
Что входит в работу
При заказе разработки Magento-проекта под ключ мы предоставляем:
- Архитектурное проектирование: выбор модулей, настройка инфраструктуры, конфигурация Varnish/Redis/Elasticsearch
- Разработка кастомных модулей и расширений с полной документацией в формате README
- Интеграция с внешними системами: ERP, CRM, 1С, маркетплейсы
- Настройка мультисайта и store view
- Оптимизация производительности: кеширование, CDN, minification
- Деплой с CI/CD (GitLab/GitHub Actions)
- Техническая поддержка после запуска (с гарантийным периодом)
Сроки
Запуск магазина на Open Source с готовой темой и стандартным набором модулей — от 4 до 8 недель. Кастомная разработка с несколькими модулями и интеграцией с ERP — от 3 до 6 месяцев. Adobe Commerce с B2B-модулем, персонализацией и интеграциями — от полугода. Точные сроки оцениваем после аудита ваших требований.
Получите консультацию инженера по вашему проекту — мы оценим объём работ и предложим архитектурное решение. Наш опыт: более 7 лет разработки Magento, 20+ запущенных магазинов. Свяжитесь с нами для обсуждения ваших задач.
По данным Adobe, более 250 000 магазинов работают на Magento.







