Kiến trúc nanoCart
Tổng quan
nanoCart tách biệt hoàn toàn giữa core (engine) và registry (nội dung mở rộng).
nanoCart/
├── core/ Engine: routing, DB, session, cart, user...
├── registry/ Plugins, themes, languages — PSR-4
├── public/ Webroot duy nhất expose ra internet
└── storage/ Cache, logs, sessions — KHÔNG exposeRegistry Loader
core/Registry/Loader.php — khởi động một lần qua Loader::boot().
Tự động discover:
registry/themes/<name>/theme.jsonregistry/plugins/<type>/<name>/plugin.jsonregistry/languages/<code>/manifest.json
Tạo Plugin mới
registry/plugins/payment/my_gateway/
├── plugin.json
├── pm_my_gateway.inc.php # class pm_my_gateway
└── ...plugin.json:
json
{
"name": "pm_my_gateway",
"type": "payment",
"version": "1.0.0",
"psr4": "NanoCart\\Plugins\\Payment\\MyGateway\\"
}Tạo Theme mới
registry/themes/my-theme/
├── theme.json
├── catalog/ # templates catalog
└── admin/ # templates adminHooks
Dùng event::fire() và event::listen() (kế thừa từ core).
Convert Tool
Chạy lại khi upstream có bản mới:
bash
php tools/convert-litecart.php --dry-run
php tools/convert-litecart.php