Услуги Создание магазина Доработка Интеграция 1С О компании FAQ Блог Кейсы Отзывы Контакты
А
Автор статьи

Дистрибутив OpenCart 3: структура папок и файлов — полный разбор

Дистрибутив OpenCart 3: структура папок и файлов

с учётом практики команды с 17-летним опытом разработки на OpenCart — Дистрибутив OpenCart 3 — это набор папок и файлов, каждый из которых отвечает за свою часть магазина: admin (админка), catalog (витрина), system (ядро), storage (кеш, логи, сессии), image (изображения) и install (установщик). Зная структуру, вы безопасно ставите модули, ищете шаблоны, читаете логи и не ломаете обновления.

Из практики: знание структуры шаблона сокращает доработки с дней до часов.

По практике команды с 17-летним опытом разработки на OpenCart: структура дистрибутива OpenCart 3 — не архивная пыль, а то, что нужно знать каждому, кто собирается дорабатывать магазин. Частая ошибка — править файлы в корне каталога, не понимая, где заканчивается витрина (catalog/) и начинается админка (admin/). Правильный подход — сначала изучить карту папок, чтобы не сломать обновлениями то, что работает годами.

Полная структура дистрибутива OpenCart 3

После распаковки архива OpenCart 3 вы увидите несколько папок. Вот что внутри каждой и зачем она нужна:

admin/ — панель управления

Здесь хранится всё, что связано с админкой: контроллеры, модели, шаблоны, языковые файлы и конфигурация. Структура:

  • admin/controller/ — логика страниц админки. Каждый файл — один раздел (например, common/header.php отвечает за шапку).
  • admin/model/ — запросы к базе данных для админки.
  • admin/view/template/ — шаблоны (Twig) страниц админки.
  • admin/language/ru-ru/ — переводы интерфейса на русский.
  • admin/config.php — настройки подключения к БД и пути к папкам. Не редактируйте без понимания, что делаете.

Совет из практики: для безопасности админку можно переименовать (например, в /myadmin/). Это не панацея, но снижает количество автоматических атак. В русских сборках (ocStore, «Русская сборка») это уже сделано.

catalog/ — витрина магазина

Вся клиентская часть магазина — от главной страницы до корзины и оформления заказа.

  • catalog/controller/ — обработка запросов покупателя. Подпапки: product/ (товары), information/ (страницы), checkout/ (корзина и оформление), extension/ (модули).
  • catalog/model/ — модели данных: товары, категории, заказы, клиенты.
  • catalog/view/theme/ — шаблоны витрины. Основная тема лежит в default/template/. Если вы ставите шаблон — копируйте файлы сюда, не меняйте ядро.
  • catalog/language/ — языковые файлы витрины.
  • catalog/controller/extension/ — контроллеры установленных модулей.

system/ — ядро движка

Сюда лучше вообще не лезть. System содержит библиотеки, движок шаблонизатора Twig, систему маршрутизации (Route), кеш, сессии, почту и десятки других компонентов. Структура:

  • system/library/ — базовые классы: Cart, Customer, Mail, Session, Route, Registry.
  • system/database/ — абстракция работы с MySQL (PDO, MySQLi).
  • system/template/ — движок Twig.
  • system/storage/ — если storage не вынесен, кеш и логи лежат здесь.

Правка файлов system/ — это прямая модификация ядра. При обновлении OpenCart все изменения пропадают. Если нужна доработка — используйте OCMOD или Event-систему.

storage/ — кеш, логи и сессии

В OpenCart 3.0.3.x и новее папка storage содержит:

  • cache/ — кешированные страницы и данные.
  • logs/ — файлы логов ошибок (error.log, access.log).
  • session/ — файлы сессий пользователей.
  • download/ — загружаемые товары (цифровые продукты).
  • modification/ — файлы OCMOD-модификаций.
  • upload/ — загруженные пользователем файлы.

Важно: storage должен быть доступен для записи PHP, но не доступен из браузера по прямому URL. Если сервер позволяет — вынесите storage за пределы public_html. Это защитит логи и сессии от несанкционированного доступа.

image/ — изображения

Хранит загруженные изображения товаров, категорий и баннеров. Структура:

  • cache/ — уменьшенные копии изображений (генерируются автоматически).
  • catalog/ — оригинальные изображения товаров и категорий.
  • banner/ — баннеры.
  • logo/ — логотипы.

install/ — установщик

Мастер установки. После завершения установки обязательно удалите эту папку. Если install останется — злоумышленник сможет переустановить OpenCart, затёрши все ваши данные и настройки. Это одна из самых распространённых дыр безопасности.

Корневые файлы: что за что отвечает

В корне дистрибутива — несколько файлов, каждый со своей ролью:

ФайлНазначение
index.phpТочка входа для витрины. Подключает system и запускает маршрутизацию.
admin/index.phpТочка входа для админки.
.htaccessПравила URL-перезаписи (Apache). Для Nginx аналог — в конфиге сервера.
config.phpПути к папкам и настройки БД для витрины.
admin/config.phpТо же для админки.
robots.txtДирективы для поисковых роботов.
xmlrpc.phpXML-RPC API (рекомендуется удалить, если не используется).

Где править шаблоны, а где — модули

Понимание структуры критично, потому что неправильный выбор файла для правки ведёт к двум проблемам: либо правка пропадёт при обновлении, либо сломается что-то непредсказуемое.

Шаблоны витрины

Правьте файлы в catalog/view/theme/YOUR_THEME/template/. Никогда не редактируйте файлы в catalog/view/theme/default/ — они затрутся при обновлении темы. Создайте дочернюю тему или копируйте нужные файлы в свою папку темы.

Модули и расширения

Установленные модули лежат в catalog/controller/extension/ и catalog/view/theme/default/template/extension/. Но лучше не править их напрямую — используйте OCMOD (XML-модификации) или Event-систему для переопределения поведения без изменения файлов.

OCMOD vs Event-система

  • OCMOD — XML-файл, который описывает, какие файлы изменить и как. Не трогает оригинальные файлы, работает через виртуальную файловую систему. Подходит для масштабных правок.
  • Event-система — хуки, которые позволяют вызывать свой код до или после выполнения стандартных функций. Появилась в OpenCart 3.x, стала основным способом расширения в 4.x. Чище и безопаснее OCMOD.

Типичные ошибки при работе с дистрибутивом

  1. Правка файлов ядра напрямую. Если вы редактируете system/library/cart/cart.php или catalog/controller/common/header.php — при следующем обновлении OpenCart все изменения пропадут. Используйте OCMOD или Event-систему.
  2. Не удалённая папка install. Стандартная дыра. Злоумышленник получает доступ к установщику и может сбросить данные. Удалите install сразу после установки.
  3. storage не вынесен из public_html. Логи, сессии и кеш доступны по прямому URL. Это утечка данных. Вынесите storage за пределы веб-корня, если сервер позволяет.
  4. Путаница между catalog/ и system/. В catalog/ — логика витрины. В system/ — ядро. Правка не того раздела может сломать админку или витрину непредсказуемым образом.
  5. Некорректные пути в config.php. Ошибка в DIR_APPLICATION или DB_HOSTNAME даст белую страницу без ошибки. Всегда проверяйте error.log в storage/logs/ при проблемах.

Рекомендации из практики

Как лучше: Понимание структуры файлов OpenCart 3 ускоряет любую доработку в разы. Запомните: catalog — витрина, admin — админка, system — ядро.

Как не делать: Не редактируйте файлы в system/ — это ядро. Любое обновление затрёт изменения. Используйте OCMOD.

Кейс из практики: Разработчик правил файлы в system/library/cart.php напрямую. При обновлении OpenCart все правки потерялись. Пришлось восстанавливать 8 часов работы.

По практике, понимание структуры OpenCart — базовый навык для безопасных доработок. Закажите доработку OpenCart

Отличия структуры в OpenCart 4

Если вы работаете с OpenCart 4, учтите ключевые изменения в структуре:

  • Папка upload/ стала корневой — все файлы (admin, catalog, system) лежат внутри неё.
  • Появился Composer для управления зависимостями (vendor/).
  • Шаблонизатор перешёл на Twig 3.x с поддержкой наследования тем.
  • REST API вынесен в отдельный маршрут (/api/).
  • Event-система стала основным способом расширения (вместо OCMOD).

Подробнее о различиях между версиями — в статье «OpenCart 3.0.3.8 vs 4.x: сравнение, миграция и подводные камни».

FAQ

Где находится витрина магазина?

В папке catalog/. Там же контроллеры, модели, языковые файлы и шаблоны пользовательской части сайта.

Где админка и можно ли её переименовать?

Админка по умолчанию в папке admin/. Для безопасности её можно переименовать — это стандартная практика. В русских сборках (ocStore) переименование уже сделано.

Можно ли править файлы в system/?

<!— wp:paragraph */

Технически да, но не рекомендуется. Файлы system/ — это ядро движка. При обновлении OpenCart все правки пропадут. Используйте OCMOD или Event-систему.

Зачем нужна папка storage?

Там хранятся кеш, логи ошибок, сессии пользователей, загруженные файлы и модификации OCMOD. В новых версиях OpenCart рекомендуется выносить storage за пределы public_html для безопасности.

Что делать, если после установки белая страница?

Проверьте файл storage/logs/error.log — там будет описание ошибки. Чаще всего проблема в некорректных путях в config.php или в отсутствии расширений PHP (GD, cURL, OpenSSL).

Из практики. В практике работы с OpenCart я не раз сталкивался с ситуацией, когда стандартное решение не подходит, и нужно адаптировать CMS под конкретные задачи бизнеса. В одном проекте мы потратили неделю на поиск проблемы, которая решилась простым изменением конфигурации — потому что не посмотрели в логи сразу. С тех пор у нас правило: начинать диагностику с логов, а не с предположений.

Как не надо. Не копируйте готовые решения из интернета без проверки совместимости с вашей версией OpenCart и установленными модулями. То, что сработало у другого владельца магазина, может сломать ваш сайт — особенно если у вас нестандартная сборка. Всегда делайте бэкап перед любыми изменениями.

← Предыдущая Файл php.ini в OpenCart: какие параметры настраивать и как Следующая → Как исправить 302 редирект в OpenCart: замена на 301 (Apache, Nginx)

Комментарии (2)

Пока нет комментариев. Будьте первым!

Оставить комментарий

Ваш комментарий появится после проверки модератором.