Skip to content

Kiến trúc nanoCart

Tổng quan

nanoCart có ba thành phần độc lập:

Thành phầnVai tròDeploy
coreEngine: routing, DB, session, cartCùng với cart
cart (public/)Webroot e-commerceServer chính
registryCung cấp theme/plugin dạng packageServer/domain riêng
nanoCart/
├── core/       Engine: routing, DB, session, cart, user...
├── public/     Webroot duy nhất expose ra internet
├── storage/
│   └── themes/ Theme đã cài — cart đọc từ đây khi runtime
└── registry/   Chỉ dùng local dev — production dùng service riêng

Kiến trúc Registry (Service độc lập)

Registry không được deploy cùng cart. Đây là service riêng (website riêng) cung cấp package:

Theme lookup order (runtime):
  1. storage/themes/<name>/    ← đã cài (ưu tiên)
  2. registry/themes/<name>/   ← local dev fallback
  3. core/includes/templates/  ← core mặc định

Cài theme từ registry:

bash
# Cài từ local registry (dev)
php tools/install-theme.php --name=nanocart-default

# Cài từ remote registry (production)
php tools/install-theme.php --url=https://registry.nanocart.vn/themes/nanocart-default.zip

Sau khi cài, assets tự động publish vào public/themes/{name}/.

Registry Loader (dev only)

core/Registry/Loader.php — chỉ chạy khi registry/ có mặt (local dev).

Tự động discover:

  • registry/themes/<name>/theme.json
  • registry/plugins/<type>/<name>/plugin.json
  • registry/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 admin

Hooks

Dùng event::fire()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

nanoCart — Thương mại điện tử dành cho Việt Nam