Уявіть: інтернет-магазин меблів із сотнями 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. Отримайте попередню оцінку: ми допоможемо зрозуміти, які модулі потрібні та скільки часу займе розробка. Зв'яжіться з нами для обговорення деталей.







