Уявіть: інтернет-магазин меблів із сотнями SKU, кожна комбінація тканини та ніжок — окремий товар зі своєю ціною та залишком. На WooCommerce це вимагало б десятка плагінів і костилів. Drupal Commerce 2.x вирішує задачу без них. Архітектура на плагінах та YAML-конфігах дозволяє гнучко описати будь-яку товарну ієрархію. Drupal Commerce — не просто кошик, а фреймворк для складної e-commerce логіки.
Ми маємо 7+ років досвіду з Drupal і понад 50 успішних e-commerce проєктів. Ми реалізуємо інтернет-магазин на Drupal Commerce під ключ.
Проблеми, які вирішує Drupal Commerce 2.x
Стандартні модулі Drupal не завжди покривають складну e-commerce логіку. Наприклад, товар із кількома варіаціями (колір, розмір) і різними цінами. Або багаторівневі знижки на основі історії замовлень. Часто до нас приходять після невдалих спроб адаптувати WooCommerce під Drupal. Коли інтеграція з 1С потрібна на рівні обміну замовленнями та залишками, Commerce 2.x справляється краще.
Але це не всі складнощі. Реальний кейс: клієнт продає меблі з десятками комбінацій тканини та ніжок. Кожна комбінація — окремий SKU з ціною та залишком. У Commerce 2.x це вирішується через Product Variation, а custom fields — через Field API. Інший приклад: потрібно зібрати одне замовлення з товарів у різних магазинах (multi-store). Commerce Stores з коробки підтримує роздільні кошики та платіжні профілі. Економія на розробці очевидна: не потрібно писати кастомні модулі під кожну задачу. Drupal Commerce 2.x в 2-3 рази швидше впроваджується для складних товарних каталогів, ніж WooCommerce, і не потребує сторонніх плагінів для варіацій.
Чому Commerce 2.x краще за Commerce 1.x?
Commerce 2.x повністю переписаний для нових версій Drupal і несумісний з першою версією. Ось ключові відмінності:
| Критерій | Commerce 1.x (D7) | Commerce 2.x (D8+) |
|---|---|---|
| Архітектура | Rules + Features | Плагіни + конфіг YAML |
| Управління станом | Rules | State Machine |
| Мультисайт | Складно | Stores з коробки |
| API | Hook-based | OOP + Events |
Якщо проєкт все ще на Drupal 7, доведеться або використовувати legacy Commerce 1.x, або мігрувати з повною переробкою. Наш досвід показує, що міграція з Commerce 1.x на 2.x займає 2–4 тижні в залежності від кастомізацій.
Що робити, якщо потрібна міграція з Commerce 1.x?
Міграція — це не просто перенесення даних, а переробка бізнес-логіки. Commerce 1.x та 2.x несумісні: модулі, хуки, структура бази — все різне. Ми розробляємо план міграції, який включає: аудит поточної функціональності, експорт даних у CSV/JSON, написання міграційних скриптів на Migrate API, налаштування нового магазину з нуля. Після міграції замовлення та залишки переносяться, а кастомні checkout flows переписуються під плагінну архітектуру.
Базова установка через Composer
composer require drupal/commerce drupal/commerce_price drupal/commerce_store \
drupal/commerce_product drupal/commerce_order drupal/commerce_cart \
drupal/commerce_checkout drupal/commerce_payment drupal/commerce_tax
drush en commerce commerce_product commerce_cart commerce_checkout \
commerce_payment commerce_tax commerce_order -y
drush cr Додаткові модулі
Для платіжних шлюзів: `composer require drupal/commerce_stripe drupal/commerce_paypal`. Для складу: `commerce_stock`. Для 1С: `commerce_1c`. Для пошуку: `search_api` + `search_api_solr`.Налаштування магазину та типів продуктів
Налаштування інтернет-магазину Drupal починається зі створення магазину у /admin/commerce/config/stores. Вкажіть базову валюту, країну за замовчуванням та список країн для доставки.
Товари в Commerce поділяються на product (картка) та variation (SKU з ціною). Створіть типи продуктів та варіацій через адмінку. Для програмного створення використовуйте код:
use Drupal\commerce_price\Price;
use Drupal\commerce_product\Entity\Product;
use Drupal\commerce_product\Entity\ProductVariation;
$variation = ProductVariation::create([
'type' => 'default',
'sku' => 'CHAIR-BLK-L',
'price' => new Price('1499.00', 'RUB'),
'field_color' => ['target_id' => $colorTermId],
'field_size' => 'L',
]);
$variation->save();
$product = Product::create([
'type' => 'default',
'title' => 'Крісло офісне',
'stores' => [$storeId],
'variations' => [$variation],
]);
$product->save();
Для каталогу використовуйте Views. Налаштуйте фільтри за ціною, атрибутами, магазином. Для фасетного пошуку Drupal підключіть Search API та Solr.
Як налаштувати checkout flow Drupal під свою бізнес-логіку?
Архітектура Commerce 2.x базується на подійно-орієнтованому підході (Event-Driven), що дозволяє легко розширювати функціонал через плагіни та слухачі подій. Checkout flow Drupal дозволяє кастомізувати процес оформлення замовлення. Ви можете додавати або видаляти кроки: авторизація, адреса доставки, платіжна інформація, підтвердження. Якщо потрібне нестандартне поле, наприклад, примітка до замовлення, створіть плагін:
/**
* @CommerceCheckoutPane(
* id = "custom_gift_note",
* label = @Translation("Gift note"),
* default_step = "order_information",
* )
*/
class GiftNotePane extends CheckoutPaneBase {
public function buildPaneForm(array $pane_form, FormStateInterface $form_state, array &$complete_form): array {
$pane_form['gift_note'] = [
'#type' => 'textarea',
'#title' => $this->t('Повідомлення отримувачу'),
'#rows' => 3,
];
return $pane_form;
}
}Підключіть платіжні шлюзи Drupal: Stripe, PayPal, ЮKassa через відповідні модулі. Конфігурація шлюзу включає ключі API та вибір режиму (тестовий/бойовий). Гарантуємо підтримку останніх версій Drupal.
Управління складом та податки
Commerce не включає інвентаризацію з коробки — використовуйте модуль commerce_stock для інтеграції складу Drupal. Він додає поле залишку на варіації та підтримує кілька складів.
use Drupal\commerce_stock\StockServiceManagerInterface;
$stockService = \Drupal::service('commerce_stock.service_manager')
->getService($productVariation);
$level = $stockService->getStockLevel($productVariation, $locations);
$stockService->createTransaction(
$productVariation,
$locationId,
[],
100,
new Price('0', 'RUB'),
'RUB',
TRANSACTION_TYPE_IN,
[]
);Податкова система Drupal налаштовується через модуль commerce_tax. Створіть податковий тип, вкажіть ставку та території. Наприклад, ПДВ 20% для Білорусі. Commerce автоматично застосує ставку за адресою покупця.
Що входить в роботу
- Аналіз вимог та підготовка технічного завдання
- Встановлення Drupal та Commerce на хостинг
- Налаштування магазину, типів продуктів та варіацій
- Розробка кастомних кроків оформлення (якщо потрібно)
- Підключення платіжного шлюзу та податків
- Інтеграція зі складом
- Налаштування каталогу з фасетним пошуком Drupal
- Тестування та навчання адміністраторів
- Документація по роботі з системою
- Гарантійне обслуговування 1 місяць
Терміни реалізації
| Етап | Час |
|---|---|
| Встановлення та налаштування магазину | 2–3 дні |
| Кастомізація checkout | 2 дні |
| Інтеграція платіжного шлюзу | 1–3 дні |
| Управління складом | 1–2 дні |
| Каталог з фасетним пошуком | 2–4 дні |
| Податки | 1–2 дні |
Базовий робочий магазин — від 1,5 до 2 тижнів. Складний проєкт з кастомною логікою — від 3 до 5 тижнів. Вартість базового інтернет-магазину — від $1500, складний проєкт — від $8000. Отримайте попередню оцінку: ми допоможемо зрозуміти, які модулі потрібні та скільки часу займе розробка. Зв'яжіться з нами для обговорення деталей.







