Разработка сайта на CMS OpenCart
OpenCart — специализированная e-commerce CMS с открытым исходным кодом. В отличие от WordPress + WooCommerce, OpenCart создан исключительно для интернет-торговли: все сущности (товар, заказ, покупатель, склад) — первичные объекты системы, а не надстройки. Это даёт предсказуемую производительность на больших каталогах и меньший overhead.
Что получает клиент «из коробки»
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/kresla/kreslo-ofisnoe
Этапы разработки сайта
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.
Для СДЭК, Почты России, Boxberry — расширения из маркетплейса или кастомная разработка.
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', 'kreslo-ofisnoe-chernoe');
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 недели.







