API OpenCart: REST API, OCMOD, Event-система — полный гайд
API OpenCart: REST API, OCMOD, Event-система — гайд
Краткий ответ: OpenCart предоставляет три основных способа интеграции: REST API (стандартные эндпоинты для обмена данными с внешними системами), OCMOD (модификация файлов без правки ядра) и Event-система (хуки в OC4 для расширения логики). Какой способ выбрать — зависит от задачи: REST API для обмена данными, OCMOD для быстрых правок, Events для глубокой интеграции.
Обзор способов интеграции
| Способ | Что делает | Когда использовать | Версии OC |
|---|---|---|---|
| REST API | Стандартные эндпоинты для CRUD-операций | Обмен данными с 1С, CRM, маркетплейсами | OC3, OC4 |
| OCMOD | XML-модификации файлов без правки ядра | Быстрые правки шаблонов и контроллеров | OC2, OC3 |
| Event-система | Хуки до/после выполнения функций | Глубокая интеграция, расширение логики | OC4 |
REST API в OpenCart 3
OC3 поддерживает REST API с аутентификацией по API-ключу. Эндпоинты доступны по URL вида /index.php?route=api/....
Настройка API
- В админке: Система → Пользователи → API.
- Нажмите «Добавить» и укажите IP-адрес, с которого будут приходить запросы (или
*для всех). - Скопируйте сгенерированный API-ключ.
Основные эндпоинты
| Метод | Эндпоинт | Описание |
|---|---|---|
| GET | /index.php?route=api/product |
Список товаров |
| GET | /index.php?route=api/product&id=123 |
Конкретный товар |
| POST | /index.php?route=api/cart/add |
Добавить товар в корзину |
| GET | /index.php?route=api/order |
Список заказов |
| POST | /index.php?route=api/order/history |
Обновить статус заказа |
| GET | /index.php?route=api/customer |
Список клиентов |
Пример запроса (cURL)
# Получить список товаров
curl -X GET "https://example.com/index.php?route=api/product&api_token=ВАШ_ТОКЕН"
-H "Accept: application/json"
# Добавить товар в корзину
curl -X POST "https://example.com/index.php?route=api/cart/add&api_token=ВАШ_ТОКЕН"
-H "Content-Type: application/json"
-d '{"product_id": 42, "quantity": 1}'
Подробнее об архитектуре OC4 и его API — в статье «OpenCart 4 под микроскопом: архитектура, Twig, REST API, Event-система».
REST API в OpenCart 4 (JWT)
В OC4 API полностью переработан: JWT-аутентификация, RESTful-эндпоинты, JSON-ответы. Ключевые отличия от OC3:
| Параметр | OC3 API | OC4 API |
|---|---|---|
| Аутентификация | API-токен в URL | JWT Bearer-токен |
| Формат ответа | JSON/XML | Только JSON |
| Эндпоинты | Базовые (товары, заказы, клиенты) | Расширенные + кастомные |
| Документация | Ограниченная | Встроенная (Swagger) |
Пример авторизации в OC4
# Получить JWT-токен
curl -X POST "https://example.com/api/login"
-H "Content-Type: application/json"
-d '{"username": "admin", "password": "пароль"}'
# Использовать токен в запросах
curl -X GET "https://example.com/api/product"
-H "Authorization: Bearer ВАШ_JWT_ТОКЕН"
-H "Accept: application/json"
OCMOD: модификации без правки ядра
OCMOD — система модификаций, которая позволяет менять PHP-файлы без их физического редактирования. При установке OCMOD-модуля создаётся XML-файл, который описывает, какие файлы изменить и как. OpenCart применяет модификации «поверх» оригинальных файлов.
Структура OCMOD-файла
<modification>
<name>Моя модификация</name>
<code>my_modification</code>
<version>1.0</version>
<author>Разработчик</author>
<file path="catalog/controller/common/header.php">
<operation>
<search>
<![CDATA[$this->load->view('common/header', $data);]]>
</search>
<add position="before">
<![CDATA[
// Мой код до вызова шаблона
$data['custom_variable'] = 'значение';
]]>
</add>
</operation>
</file>
</modification>
Установка OCMOD
- Загрузите XML-файл через Дополнения → Модификации → Загрузить.
- Нажмите Обновить (синхронизация).
- Очистите кеш: Дополнения → Модификации → Очистить кеш.
Важно: не злоупотребляйте OCMOD. Каждая модификация — это дополнительная обработка при каждом запросе. На большом количестве OCMOD-ов сайт замедляется. Если выбираете между OC3 и OC4 — смотрите сравнение OpenCart 3 и 4.
Event-система в OpenCart 4
Event-система — основной способ расширения OC4. Вместо модификации файлов вы подписываетесь на «события» (хуки) и выполняете свой код до или после стандартной функции.
Как работает Event-система
- Ядро OpenCart генерирует события в ключевых точках (добавление товара, оформление заказа, рендер страницы).
- Вы создаёте модуль, который «слушает» нужное событие.
- Код модуля выполняется в нужный момент без изменения ядра.
Пример: изменение данных товара перед выводом
// catalog/controller/event/my_handler.php
class ControllerEventMyHandler extends Controller {
public function index(&$route, &$args, &$output) {
// Этот код выполнится после catalog/controller/product/product
// $output — HTML страницы товара
// Пример: добавить кастомный класс к body
$output = str_replace(
'<body',
'<body class="custom-page"',
$output
);
}
}
// Регистрация в admin/model/setting/event.php:
// trigger: catalog/controller/product/product/after
// action: catalog/event/my_handler
Типичные события
| Событие | Когда срабатывает | Пример использования |
|---|---|---|
catalog/model/*/addProduct/after |
После добавления товара | Отправка в 1С, CRM |
catalog/model/*/getProduct/after |
После получения товара | Добавить кастомные поля |
catalog/controller/checkout/*/before |
До обработки checkout | Проверка данных |
catalog/controller/*/before |
До любого контроллера | Логирование, редиректы |
Когда стандартного API недостаточно
Если REST API не покрывает ваши задачи — создайте кастомный модуль с собственными эндпоинтами. Это полный контроль над логикой:
- Свой контроллер с уникальным маршрутом.
- Своя аутентификация (JWT, API-ключи, IP-белый список).
- Свой формат ответа (JSON, XML, CSV).
- Интеграция с внешними API (1С, CRM, маркетплейсы).
Подробнее о структуре модуля — в статье «Структура модуля OpenCart 3: файлы, MVC-L и OCMOD».
Лучшие практики
- Используйте Event-систему вместо OCMOD в OC4 — чище, быстрее, проще обновлять.
- Не модифицируйте ядро напрямую — правки пропадут при обновлении.
- Тестируйте API на тестовом стенде перед запуском на продакшене.
- Логируйте API-запросы — это поможет при отладке интеграций. Подробнее: Error log в OpenCart: где смотреть журнал ошибок.
- Защищайте эндпоинты — авторизация, rate limiting, валидация входных данных.
Частые вопросы
Какой способ интеграции выбрать?
Для обмена данными с внешними системами (1С, CRM) — REST API. Для быстрых правок шаблонов — OCMOD. Для глубокой интеграции и расширения логики — Event-система (OC4). Подробнее об архитектуре: OpenCart 4 под микроскопом.
OCMOD и Event-система — в чём разница?
OCMOD модифицирует файлы через XML-правки (виртуальная файловая система). Event-система позволяет подписаться на хуки и выполнять код без модификации файлов. Event-система чище и рекомендуется для OC4.
Можно ли создать свой REST API?
Да. Создайте кастомный контроллер в catalog/controller/api/, зарегистрируйте маршрут и настройте аутентификацию. Полный контроль над логикой и форматом ответа.
Где найти документацию по API?
В OC4 — встроенная документация (Swagger) по адресу /api/. В OC3 — на официальном сайте OpenCart и в коде контроллеров.
Комментарии (0)
Пока нет комментариев. Будьте первым!
Оставить комментарий