Витрина, панель и папки проекта
Магазин на OpenCart — это два отдельных приложения с одной общей базой: витрина для покупателей и панель управления для сотрудников. Понимать, какая папка к какому приложению относится, — первое, что нужно, чтобы найти любой файл.
Папки проекта
shop/
├── admin/ приложение панели управления
├── catalog/ приложение витрины
├── extension/ дополнения — здесь живёт ваш код
│ └── opencart/ встроенные модули, способы оплаты и доставки
├── image/ картинки товаров и их уменьшенные копии
├── system/ ядро: движок, библиотеки, хранилище
├── config.php настройки витрины
└── index.php точка входа витриныУ панели своя точка входа admin/index.php и свой файл admin/config.php.
Два приложения
| Приложение | Папка | Адрес | Кто пользуется |
|---|---|---|---|
| Витрина | catalog | http://shop.test/ | Покупатели |
| Панель | admin | http://shop.test/admin/ | Сотрудники |
Код витрины нельзя вызвать из панели, и наоборот. Если обоим нужно одно и то же — например, модель, читающая вашу таблицу, — файл пишут дважды: по одному в каждом приложении.
Внутри приложения
catalog и admin устроены одинаково:
catalog/
├── controller/ логика страниц
├── model/ запросы к базе
├── view/template/ шаблоны Twig
└── language/en-gb/ тексты для каждого языкаУ файлов одной страницы одинаковый путь в каждой папке: контроллер catalog/controller/product/product.php использует шаблон catalog/view/template/product/product.twig и файл перевода catalog/language/en-gb/product/product.php.
Папка system
| Папка | Что в ней |
|---|---|
system/engine | Базовые классы: контроллер, модель, загрузчик, реестр |
system/library | Библиотеки: корзина, покупатель, почта, кеш, база |
system/config | Настройки движка по умолчанию |
system/storage | Кеш, журналы, сессии, загруженные файлы |
Журнал ошибок — файл system/storage/logs/error.log. Его же показывает панель: System → Maintenance → Error Logs.
Файлы настроек
В config.php и admin/config.php заданы константы — постоянные значения, доступные в любом файле:
// config.php
define('HTTP_SERVER', 'http://shop.test/');
define('DIR_APPLICATION', '/var/www/shop/catalog/');
define('DIR_EXTENSION', '/var/www/shop/extension/');
define('DIR_STORAGE', '/var/www/shop/system/storage/');
define('DB_DATABASE', 'shop');
define('DB_PREFIX', 'oc_');DB_PREFIX — приставка к имени каждой таблицы: таблица товаров называется oc_product. В коде таблицу всегда записывают как DB_PREFIX . "product".
Частая ошибка
Файл создают в catalog/controller/..., а адрес открывают под /admin/ — и страница не находится. Витрина и панель не видят файлы друг друга. Сначала решите, для кого страница: для покупателя — в catalog, для сотрудника — в admin.