Bỏ qua, đến nội dung

Cài đặt và sử dụng — Hello (Plugin mẫu)

Tổng quan

Plugin @digiforce-nc/plugin-helloplugin mẫu (boilerplate/template) dành cho developer muốn học cách phát triển plugin cho DigiForce. Plugin minh hoạ đầy đủ cấu trúc, vòng đời, cách đăng ký UI widget (Block, Action, Field), và cách tích hợp client/server.

Mục đích

Đây không phải plugin dùng trong production. Hãy dùng làm điểm khởi đầu khi tạo plugin mới.

Bước 1: Kích hoạt plugin

Vào Settings → Plugin Manager, tìm plugin-hello và bật lên.

Bước 2: Khám phá code mẫu

Sau khi kích hoạt, plugin đăng ký các widget mẫu vào hệ thống. Mục đích chính là đọc source code để hiểu cấu trúc.

Cấu trúc thư mục

plugin-hello/
├── src/
│   ├── index.ts              # Entry point
│   ├── server/
│   │   ├── plugin.ts         # PluginHelloServer (lifecycle hooks)
│   │   └── collections/      # Định nghĩa collection mẫu
│   ├── client/
│   │   ├── index.tsx          # PluginHelloClient (đăng ký widgets)
│   │   └── locale.ts         # Đa ngôn ngữ
│   └── locale/                # File dịch

Vòng đời plugin phía server

PluginHelloServer kế thừa class Plugin và implement các lifecycle method:

MethodThời điểmMục đích
afterAdd()Sau khi plugin được thêm vào appĐăng ký sớm trước khi load
beforeLoad()Trước khi loadĐăng ký hooks, middleware, ACL
load()Khi load pluginImport collections, đăng ký resources, actions
install()Lần cài đặt đầu tiênSeed data, tạo dữ liệu ban đầu
afterEnable()Sau khi bật pluginXử lý khi admin bật plugin
afterDisable()Sau khi tắt pluginDọn dẹp khi admin tắt plugin
remove()Khi gỡ pluginXoá dữ liệu, clean up

Các widget mẫu phía client

Plugin đăng ký tổng cộng 14 widget mẫu để minh hoạ các loại widget khác nhau:

Block Widget (8 loại)

WidgetKế thừaSceneMô tả
Hello1BlockWidgetBlockWidgetBlock đơn giản nhất, không cần data source
Hello2BlockWidgetDataBlockWidgetBlock có data source
Hello3BlockWidgetCollectionBlockWidgetmanyBlock hiển thị nhiều bản ghi
Hello4BlockWidgetCollectionBlockWidgetoamBlock one-and-many
Hello5BlockWidgetCollectionBlockWidgetnewBlock tạo mới bản ghi
Hello6BlockWidgetCollectionBlockWidgetselectBlock chọn bản ghi
Hello7BlockWidgetCollectionBlockWidgetoneBlock hiển thị một bản ghi
Hello8BlockWidgetFilterBlockWidgetBlock bộ lọc

Action Widget (4 loại)

WidgetSceneMô tả
Hello1ActionWidgetcollectionAction áp dụng cho collection
Hello2ActionWidgetrecordAction áp dụng cho từng record
Hello3ActionWidgetallAction áp dụng mọi context
Hello4ActionWidgetallPopup Action — mở popup khi click

Field Widget (2 loại)

WidgetLoạiBindingMô tả
Hello1FieldWidgetDisplayDisplayItemWidgetinputHiển thị giá trị (chỉ đọc)
Hello2FieldWidgetEditableEditableItemWidget + FilterableItemWidgetinputInput có thể chỉnh sửa và lọc

Cách tạo plugin mới từ template

Bước 1: Copy và đổi tên

bash
cp -r packages/plugins/@digiforce/plugin-hello packages/plugins/@digiforce/plugin-my-feature

Bước 2: Cập nhật package.json

json
{
  "name": "@digiforce-nc/plugin-my-feature",
  "version": "1.0.0",
  "displayName": "My Feature"
}

Bước 3: Đổi tên class

  • PluginHelloServerPluginMyFeatureServer
  • PluginHelloClientPluginMyFeatureClient

Bước 4: Implement logic

  • Thêm collection vào server/collections/
  • Đăng ký action handler trong server/plugin.ts
  • Tạo UI widget trong client/index.tsx

Bước 5: Đăng ký plugin

Thêm plugin vào danh sách plugin của ứng dụng.

Lưu ý quan trọng

  • Server plugin hiện tại là shell trống — tất cả lifecycle method đều rỗng
  • Toàn bộ logic mẫu nằm ở client (đăng ký widget)
  • Mỗi widget mẫu render "Hello, Digiforce!" — thay bằng logic riêng của bạn
  • Plugin không có displayName hay description trong package.json — nhớ thêm khi tạo plugin thật