Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Витрина, панель и папки проекта

Магазин на OpenCart — это два отдельных приложения с одной общей базой: витрина для покупателей и панель управления для сотрудников. Понимать, какая папка к какому приложению относится, — первое, что нужно, чтобы найти любой файл.

Папки проекта

shop/
├── admin/            приложение панели управления
├── catalog/          приложение витрины
├── extension/        дополнения — здесь живёт ваш код
│   └── opencart/     встроенные модули, способы оплаты и доставки
├── image/            картинки товаров и их уменьшенные копии
├── system/           ядро: движок, библиотеки, хранилище
├── config.php        настройки витрины
└── index.php         точка входа витрины

У панели своя точка входа admin/index.php и свой файл admin/config.php.

Два приложения

ПриложениеПапкаАдресКто пользуется
Витринаcataloghttp://shop.test/Покупатели
Панельadminhttp://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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.