_____ _____ ___ _ _ _____
/ ____| __ \ |__ \| || | |___ |
| | __| |__) | ) | || |_ / /
| | |_ | ___/ / /|__ _| / /
| |__| | | / /_ | | / /
\_____|_| |____| |_| /_/
🌐 Ngôn ngữ: 🇻🇳 Tiếng Việt (hiện tại) · 🇬🇧 English
S-Cart là dự án website thương mại điện tử miễn phí dành cho doanh nghiệp
composer create-project gp247/s-cart
Trang chủ | Demo | Tài liệu GP247 | Skill agent GP247 | Nhóm FB
1. Giới thiệu tổng quan
S-Cart là dự án website thương mại điện tử miễn phí tốt nhất dành cho cá nhân và doanh nghiệp, được xây dựng trên hệ sinh thái GP247 (nền tảng Laravel Framework) và các công nghệ mới nhất.
Mục tiêu của chúng tôi là "Hiệu quả và thân thiện cho tất cả mọi người":
- Hiệu quả: Đáp ứng ngay cả những yêu cầu nhỏ nhất của khách hàng.
- Thân thiện: Dễ sử dụng, dễ bảo trì, dễ phát triển.
- Tất cả mọi người: Doanh nghiệp, cá nhân, lập trình viên, sinh viên.
- Thân thiện với AI agent: Cấu trúc rõ ràng, tài liệu và skill chuẩn hoá để AI agent dễ hiểu dự án và hỗ trợ phát triển.
S-Cart 2.x:
Được hỗ trợ bởi hệ thống GP247 https://github.com/gp247net
Core Laravel framework 13.x https://github.com/laravel/laravel
Giao diện xây dựng trên Tailwind CSS 4
Hình ảnh minh họa


Các chức năng của S-Cart
Tính năng cốt lõi
- Xây dựng gói plugin theo mô hình HMVC
- Hỗ trợ nâng cấp và vá lỗi S-Cart qua dòng lệnh
- Tài liệu đầy đủ cho nhà phát triển và khách hàng
Chức năng của website bán hàng chuyên nghiệp
- Đa ngôn ngữ
- Đa tiền tệ
- Đầy đủ tính năng thương mại điện tử:
- Quản lý giỏ hàng
- Quản lý đơn hàng
- Quản lý sản phẩm
- Quản lý khách hàng
- Quản lý nội dung CMS:
- Danh mục
- Tin tức
- Trang nội dung
- Tiện ích mở rộng:
- Plugin thanh toán
- Phương thức vận chuyển
- Hệ thống giảm giá
- Tính thuế
- Plugin chuyên nghiệp cho S-Cart:
- Multi-vendor: https://gp247.net/vi/docs/s-cart/multi-vendor.html
- Multi-stores: https://gp247.net/vi/docs/s-cart/multi-store.html
- Tài nguyên cho nhà phát triển:
- Thư viện trực tuyến: plugin và template
- Hỗ trợ API với bảo mật cho ứng dụng và tích hợp di động
Tính năng quản trị mạnh mẽ
- Quản lý người dùng:
- Phân quyền dựa trên vai trò (quản trị viên, quản lý, marketing, v.v.)
- Bảo mật toàn diện với ghi nhật ký đầy đủ
- Kiểm soát truy cập, xác thực, và CAPTCHA
- Công cụ kinh doanh:
- Quản lý sản phẩm
- Xử lý đơn hàng
- Quản lý khách hàng
- Phân tích và thống kê
- Theo dõi hoạt động
Cấu trúc thư mục website sử dụng GP247
Website-folder/
|
├── app
│ └── GP247
│ ├── Core(+) //Tùy chỉnh controller của Core
│ ├── Helpers(+) //Tự động tải Helpers/*.php để nạp vào hệ thống
│ ├── Front(+) //Tùy chỉnh controller của GP247/Front
│ ├── Shop(+) //Tùy chỉnh controller của GP247/Shop
│ ├── Plugins(+) //Sử dụng `php artisan gp247:make-plugin --name=NameOfPlugin`
│ └── Templates(+) //Sử dụng `php artisan gp247:make-template --name=NameOfTempate`
├── public
│ └── GP247
│ ├── Core(+)
│ ├── Plugins(+)
│ └── Templates(+)
├── resources
│ └── views/vendor
│ ├── gp247-admin(+) //Tùy chỉnh core admin
│ ├── gp247-shop-admin(+) //Tùy chỉnh Shop admin
│ └── gp247-front-admin(+) //Tùy chỉnh Front admin
├── vendor
│ ├── gp247/core
│ ├── gp247/front
│ └── gp247/shop
└──...
2. Hướng dẫn cài đặt nhanh nhất
Phương pháp 1: Cài đặt bằng Composer (Khuyến nghị)
1. Tạo dự án
composer create-project gp247/s-cart
2. Kiểm tra cấu hình trong tệp .env
Đảm bảo thông tin database đã đúng. Nếu APP_KEY chưa có, tạo bằng:
php artisan key:generate
3. Khởi tạo S-Cart
php artisan sc:install
4. Cài đặt dữ liệu mẫu (tùy chọn)
php artisan sc:sample
Phương pháp 2: Cài đặt bằng Git Clone
1. Clone repository
git clone https://github.com/gp247net/s-cart.git
cd s-cart
2. Tạo file .env và cài dependencies
cp .env.example .env
php artisan key:generate
composer install
3. Cấu hình database trong .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_password
4. Khởi tạo S-Cart
php artisan sc:install
php artisan sc:sample # tùy chọn, dữ liệu mẫu
Phương pháp 3: Cài đặt bằng Docker (hỗ trợ từ S-Cart 2)
Không cần cài PHP/Composer/MySQL trên máy — chỉ cần Docker. Có hai file cấu hình tách biệt rõ ràng cho dev và prod, dùng đúng file cho đúng môi trường:
docker-compose.yml— môi trường dev (máy cá nhân)docker-compose.prod.yml— môi trường prod (server)
Cài đặt DEV:
git clone https://github.com/gp247net/s-cart.git
cd s-cart
cp .env.example .env
docker compose up -d --build
docker compose exec app php artisan key:generate
docker compose exec app php artisan sc:install
docker compose exec app php artisan sc:sample # tùy chọn
Truy cập website: http://localhost:8000
Cài đặt PROD:
git clone https://github.com/gp247net/s-cart.git
cd s-cart
cp .env.example .env
# Cấu hình .env cho prod: APP_ENV, DB_*, SC_DOCKER_WWWUSER/SC_DOCKER_WWWGROUP — xem DOCKER_vi.md
docker compose -f docker-compose.prod.yml up -d --build
docker compose -f docker-compose.prod.yml exec app php artisan key:generate
docker compose -f docker-compose.prod.yml exec app php artisan sc:install
docker compose -f docker-compose.prod.yml exec app php artisan sc:sample # tùy chọn
docker compose -f docker-compose.prod.yml run --rm node # build assets CSS/JS
⚠️ Trên prod luôn nhớ thêm -f docker-compose.prod.yml, nếu không sẽ vô
tình chạy nhầm cấu hình dev (bật debug, chạy root, cài Xdebug...) — xem chi
tiết sự cố này ở Q&A trong DOCKER_vi.md.
Hướng dẫn đầy đủ, từng bước, cùng phần Q&A xử lý sự cố chi tiết cho cả dev lẫn prod, xem tại DOCKER_vi.md.
Lưu ý quan trọng về quyền thư mục
Nếu cài đặt bằng Phương pháp 1 hoặc 2 (không dùng Docker), đảm bảo các thư mục sau có quyền ghi, nếu không việc cài đặt và các tính năng khác sẽ không hoạt động chính xác:
app/GP247public/GP247public/vendorresources/views/vendorstoragevendor
3. Q&A
Q: Làm sao xem phiên bản S-Cart đang cài?
(Chỉ có sẵn khi cài đặt s-cart trực tiếp, không áp dụng cho phương pháp cài từng thành phần)
php artisan sc:info
Q: Làm sao cập nhật S-Cart?
Cập nhật từng gói bằng Composer:
composer update gp247/core
composer update gp247/front
composer update gp247/shop
Sau đó chạy (chỉ có sẵn khi cài đặt s-cart trực tiếp):
php artisan sc:update
Tùy chọn — cập nhật lại asset/view đã publish lên bản mới nhất.
composer update và sc:update chỉ cập nhật code trong vendor/; các file đã
được copy ra public/GP247 và app/GP247 không tự động được ghi đè. Nếu
bản phát hành mới có thay đổi CSS/JS đã build sẵn hoặc template/view mặc định và
bạn muốn áp dụng lên site, hãy publish lại kèm --force:
php artisan vendor:publish --tag=gp247:core-public --force # -> public/GP247 (build admin: CSS/JS, ...)
php artisan vendor:publish --tag=gp247:front-public --force # -> public/GP247/Templates/GP247Front (CSS/JS storefront)
php artisan vendor:publish --tag=gp247:front-view --force # -> app/GP247/Templates/GP247Front (view template mặc định)
⚠️
--forcesẽ ghi đè các file ở thư mục đích — bao gồm cả những tùy chỉnh cục bộ bạn đã sửa ở đó (logo/ảnh tùy biến, file Blade template đã chỉnh, v.v.). Hãy backuppublic/GP247vàapp/GP247trước, và chỉ publish đúng tag bạn thực sự cần.
Q: Làm sao tạo plugin mới?
php artisan gp247:make-plugin --name=PluginName
Tạo kèm tệp zip để phân phối:
php artisan gp247:make-plugin --name=PluginName --download=1
Q: Làm sao tạo template mới?
php artisan gp247:make-template --name=TemplateName
Tạo kèm tệp zip để phân phối:
php artisan gp247:make-template --name=TemplateName --download=1
Q: Làm sao tùy chỉnh cấu hình upload (lfm)?
php artisan vendor:publish --tag=config-lfm
Q: Làm sao tùy chỉnh giao diện quản trị?
Mỗi package publish view quản trị vào riêng một thư mục
views/vendor/<namespace> — chỉ publish đúng tag bạn cần override:
php artisan vendor:publish --tag=gp247:core-view # -> views/vendor/gp247-admin
php artisan vendor:publish --tag=gp247:front-admin # -> views/vendor/gp247-front-admin
php artisan vendor:publish --tag=gp247:shop-view-admin # -> views/vendor/gp247-shop-admin
Dùng thêm --force nếu cần ghi đè các file đã publish từ trước.
Q: Làm sao tùy chỉnh template mặc định?
php artisan vendor:publish --tag=gp247:front-view # -> app/GP247/Templates/GP247Front
php artisan vendor:publish --tag=gp247:front-public # -> public/GP247/Templates/GP247Front
php artisan vendor:publish --tag=gp247:shop-view-front # -> app/GP247/Templates/GP247Front
Dùng thêm --force nếu cần ghi đè các file đã publish từ trước.
Q: Làm sao ghi đè các hàm helper gp247_*?
- Thêm danh sách các hàm bạn muốn ghi đè vào
config/gp247_functions_except.php - Tạo các tệp php mới chứa các hàm mới trong thư mục
app/GP247/Helpers, ví dụapp/GP247/Helpers/myfunction.php
Q: Làm sao ghi đè (override) controller của GP247/Core, GP247/Front, GP247/Shop?
S-Cart cho phép ghi đè toàn bộ controller (kể cả controller API) trong
GP247/Core, GP247/Front, GP247/Shop theo cùng một cơ chế: tạo controller
tương ứng trong app/GP247/{Core|Front|Shop}, extend lại controller gốc,
và thêm App vào phía trước namespace gốc.
Ví dụ ghi đè một controller của Core:
- Tạo file tương ứng trong
app/GP247/Core/Controllers/...(giữ nguyên đường dẫn con và tên file như trong package gốc). - Cho controller mới extend lại controller gốc trong
vendor/gp247/core/... - Đổi namespace từ
GP247\Core\ControllersthànhApp\GP247\Core\Controllers(chỉ thêmAppvào phía trước, giữ nguyên phần còn lại).
Áp dụng tương tự cho GP247\Front\*, GP247\Shop\* (đổi thành
App\GP247\Front\*, App\GP247\Shop\*) và cho controller API (đổi
GP247\Core\Api\Controllers thành App\GP247\Core\Api\Controllers).
Q: Làm sao thêm route mới cho khu vực quản trị?
Sử dụng các hằng số prefix và middleware GP247_ADMIN_PREFIX,
GP247_ADMIN_MIDDLEWARE trong khai báo route.
Tham khảo: https://github.com/gp247net/core/blob/master/src/routes.php
Q: Có những biến môi trường nào trong .env cần biết?
Tắt API:
GP247_API_MODE=1 // Để tắt, đặt giá trị 0
Tiền tố bảng dữ liệu (không thể thay đổi sau khi cài đặt gp247):
GP247_DB_PREFIX=gp247_
Tiền tố đường dẫn đến trang quản trị:
GP247_ADMIN_PREFIX=gp247_admin