Розробка сайту електронної комерції на OpenCart
OpenCart — спеціалізована CMS електронної комерції з відкритим вихідним кодом. На відміну від WordPress + WooCommerce, OpenCart створена виключно для онлайн-торгівлі: всі сутності (товар, замовлення, покупець, склад) є первинними об'єктами системи, а не надбудовами. Це забезпечує передбачувану продуктивність на великих каталогах і мінімальні витрати.
Що отримує клієнт «з коробки»
OpenCart 4.x включає без додаткових плагінів:
- Управління каталогом з категоріями будь-якої вкладеності
- Варіанти товару (опції з впливом на ціну, артикул, вагу)
- Мультисклад (кілька пунктів зберігання)
- Мультивалютність та мультимовність
- Промокоди та подарункові сертифікати
- Рейтинги та відгуки покупців
- Пов'язані товари та upsell-блоки
- Управління замовленнями з історією статусів
- Базові звіти по продажам
Це істотно зменшує вартість старту порівняно з загальними CMS, де кожен із цих модулів — окремий платний плагін.
Архітектура OpenCart 4.x
OpenCart використовує MVC-архітектуру з власним фреймворком. Структура файлів:
opencart/
├── catalog/ ← фронтенд (вітрина)
│ ├── controller/ ← логіка сторінок
│ ├── model/ ← робота з БД
│ ├── view/ ← шаблони (Twig)
│ └── language/ ← мовні файли
├── admin/ ← панель управління
│ ├── controller/
│ ├── model/
│ └── view/
├── system/ ← ядро фреймворка
└── extension/ ← розширення (плагіни, шаблони, шлюзи)
Контролери наслідують Controller, моделі — Model, маршрутизація — через query parameter route:
/index.php?route=product/product&product_id=123
# З ЧПУ:
/catalog/krisla/krislo-ofisne
Етапи розробки сайту
1. Установка та базова конфігурація — 2–3 дні
Установка OpenCart, налаштування оточення (PHP 8.1+, MySQL 8, Redis), базова конфігурація:
// config.php (генерується установником)
define('DB_DRIVER', 'mysqli');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', 'opencart');
define('DB_PASSWORD', 'secret');
define('DB_DATABASE', 'opencart');
define('DB_PORT', '3306');
define('DB_PREFIX', 'oc_');
define('HTTP_SERVER', 'https://myshop.by/');
define('HTTP_CATALOG', 'https://myshop.by/');
2. Розробка шаблону — 5–14 днів (залежить від складності дизайну)
OpenCart 4.x використовує Twig як шаблонізатор. Кастомний шаблон створюється в catalog/view/theme/{theme_name}/:
{# catalog/view/theme/myshop/template/product/category.twig #}
{% extends 'layout/base.twig' %}
{% block content %}
<div class="category-grid">
{% for product in products %}
<div class="product-card">
<a href="{{ product.href }}">
<img src="{{ product.thumb }}" alt="{{ product.name }}">
</a>
<h3>{{ product.name }}</h3>
{% if product.special %}
<span class="old-price">{{ product.price }}</span>
<span class="new-price">{{ product.special }}</span>
{% else %}
<span class="price">{{ product.price }}</span>
{% endif %}
<button data-id="{{ product.product_id }}" class="btn-cart">
У кошик
</button>
</div>
{% endfor %}
</div>
{% endblock %}
3. Наповнення каталогу — паралельно з розробкою
Імпорт з CSV/XML через розширення або прямо в БД:
// Програмне створення товару через модель
$this->load->model('catalog/product');
$data = [
'model' => 'CHAIR-BLK',
'price' => '1499.0000',
'quantity' => 25,
'minimum' => 1,
'subtract' => 1, // списувати остатки
'status' => 1,
'product_description' => [
1 => [ // language_id=1 (російська)
'name' => 'Крісло офісне Чорне',
'description' => '<p>Опис товару...</p>',
'meta_title' => 'Крісло офісне чорне купити',
'meta_description' => '...',
],
],
'product_category' => [5], // ID категорії
'product_image' => [ // додаткові фото
['image' => 'catalog/products/chair-side.jpg', 'sort_order' => 1],
],
];
$productId = $this->model_catalog_product->addProduct($data);
4. Платіжні шлюзи — 2–5 днів
Вбудовані: Bank Transfer, Cheque, COD (оплата при отриманні), Free Checkout.
Встановлювані через Extensions → Extensions → Payment:
- Для РФ: ЮKassa, Robokassa, CloudPayments, Сбербанк Еквайринг
- Для BY: Bepaid (bePaid), CloudPayments (BYN), Assist BY
- Міжнародні: Stripe, PayPal, 2Checkout
Приклад структури кастомного платіжного модуля:
extension/
└── payment/
└── mypayment/
├── admin/
│ ├── controller/payment/mypayment.php
│ ├── language/ru-ru/payment/mypayment.php
│ └── view/payment/mypayment.twig
└── catalog/
├── controller/payment/mypayment.php
├── language/ru-ru/payment/mypayment.php
└── view/payment/mypayment.twig
5. Доставка — 1–3 дні
Вбудовані методи: Flat Rate, Free Shipping, Per Item, Weight Based.
Для CDEK, Укрпошти, інших операторів — розширення з маркетплейсу або кастомна розробка.
6. SEO-оптимізація — 2–3 дні
OpenCart 4.x підтримує SEO-URL нативно:
Admin → System → Settings → Server → Use SEO URL's: Yes
SEO-URL задається для кожного ресурсу:
INSERT INTO oc_seo_url (store_id, language_id, key, value, keyword)
VALUES (0, 1, 'product_id', '123', 'krislo-ofisne-chorne');
Sitemap генерується через вбудоване розширення або окремий скрипт.
Продуктивність на великих каталогах
Для каталогів від 10 000 товарів — обов'язкові оптимізації:
Redis для кешування:
// system/config/default.php
'cache' => [
'engine' => 'redis',
'host' => '127.0.0.1',
'port' => '6379',
'timeout' => '5',
'expire' => 3600,
'prefix' => 'OC_',
],
Індекси БД — OpenCart 4.x має базові індекси, але для складних фільтрів потрібні додаткові:
ALTER TABLE oc_product_to_category ADD INDEX idx_cat_prod (category_id, product_id);
ALTER TABLE oc_product_attribute ADD INDEX idx_attr_val (attribute_id, text(50));
Оптимізація зображень — обов'язково через ImageMagick або GD, lazy loading для галереї.
Що потребує кастомної розробки
OpenCart добре закриває 80% стандартних e-commerce завдань. Нестандартні сценарії, які потребують розробки розширень:
- Складна система лояльності (кешбек, рівні)
- Інтеграція з ERP/WMS системами
- B2B-функціонал (ціни за групами клієнтів, контракти, відстрочка платежу)
- Конфігуратор товару з візуалізацією
- Нестандартний процес оформлення замовлення
Порівняння з альтернативами
| OpenCart | WooCommerce | PrestaShop | |
|---|---|---|---|
| e-commerce з коробки | Відмінно | Потребує плагінів | Добре |
| Швидкість на 10K товарів | Добра | Залежить від плагінів | Добра |
| Кастомізація | Середня | Висока | Середня |
| Екосистема плагінів СНГ | Добра | Відмінна | Слабка |
| Поріг входу розробника | Низький | Низький | Середній |
Графік реалізації
- Установка + конфігурація + базова налаштування: 2–3 дні
- Кастомний шаблон (при наявності дизайну): 5–10 днів
- Імпорт каталогу + налаштування опцій: 2–5 днів
- Платіжні шлюзи (1–2 шлюзи): 2–3 дні
- Налаштування доставки: 1–2 дні
- SEO + sitemap + мікророзмітка: 2 дні
Типовий інтернет-магазин на OpenCart: 2–4 тижні.







