Giới thiệu
🎯 Mô-đun này làm gì?
Mô-đun GeneralTypes cho phép bạn lấy các loại thực thể toàn hệ thống - các loại trang, loại biểu mẫu, loại khối sản phẩm, và nhiều hơn nữa - định nghĩa cấu trúc và danh mục nội dung của bạn trong OneEntry.
Hãy coi nó như hệ thống phân loại nội dung của bạn - OneEntry sử dụng các loại để tổ chức các loại trang khác nhau (trang chủ, bài viết blog, trang sản phẩm), biểu mẫu (liên hệ, khảo sát), khối (hero, thư viện ảnh), và sản phẩm (vật lý, kỹ thuật số), và mô-đun này cho phép bạn lấy tất cả các loại có sẵn để xây dựng giao diện động.
📖 Giải thích đơn giản
Trong OneEntry, mỗi thực thể có một loại xác định mục đích và cấu trúc của nó:
- Loại Trang:
homepage,blog_post,product_page,landing_page - Loại Biểu Mẫu:
contact_form,survey,registration,feedback - Loại Khối Sản Phẩm:
hero_section,image_gallery,text_block,video_embed - Loại Sản Phẩm:
physical_product,digital_product,service,subscription
Mô-đun GeneralTypes cung cấp danh sách đầy đủ tất cả các loại được cấu hình trong dự án OneEntry của bạn, vì vậy bạn có thể:
✅ Xây dựng dropdown động - Cho phép các admin chọn loại trang khi tạo nội dung
✅ Lọc nội dung - Chỉ hiển thị các trang "blog_post" hoặc các biểu mẫu "contact_form"
✅ Xác thực dữ liệu - Kiểm tra xem một loại có tồn tại trước khi tạo một thực thể
✅ Tạo logic dựa trên loại - Hiển thị giao diện khác nhau dựa trên loại trang
Ví dụ thực tế:
Your blog app fetches all page types:
- "homepage" → Renders featured posts slider
- "blog_post" → Renders article layout with comments
- "about_page" → Renders team member cards
- "contact_page" → Renders contact form
✨ Khái niệm chính
Hệ thống phân loại loại
OneEntry tổ chức nội dung bằng cách sử dụng một hệ thống loại nơi mỗi thực thể thuộc về một danh mục:
| Thực thể | Các loại ví dụ | Mục đích |
|---|---|---|
| Trang | homepage, blog_post, product_page, landing_page | Định nghĩa bố cục và chức năng của trang |
| Biểu mẫu | contact_form, survey, registration, feedback | Phân loại các mục đích biểu mẫu khác nhau |
| Khối Sản Phẩm | hero_section, gallery, text_block, video_embed | Các khối xây dựng cho trang sản phẩm |
| Sản phẩm | physical_product, digital_product, service, subscription | Phân loại hàng tồn kho sản phẩm |
Cấu trúc thực thể loại
Mỗi loại được trả về bởi GeneralTypes.getAllTypes() có cấu trúc như sau:
interface GeneralTypeEntity {
id: number; // Unique numeric ID (e.g., 1, 2, 3)
type: string; // Type name (e.g., "blog_post", "contact_form")
}
Khi nào sử dụng GeneralTypes
| Trường hợp sử dụng | Tại sao chọn GeneralTypes? |
|---|---|
| Xây dựng giao diện quản trị CMS | Điền các dropdown với các loại có sẵn |
| Tạo bộ lọc loại | Cho phép người dùng lọc nội dung theo loại (bài viết blog so với trang đích) |
| Xác thực việc tạo thực thể | Kiểm tra xem một loại có tồn tại trước khi tạo một trang/biểu mẫu |
| Định tuyến động | Định tuyến các loại trang khác nhau đến các thành phần khác nhau |
| Quyền truy cập dựa trên loại | Cho phép các vai trò khác nhau truy cập các loại nội dung khác nhau |
📋 Những điều bạn cần biết
Các loại được cấu hình trong Bảng điều khiển Admin của OneEntry
Bạn không tạo loại thông qua SDK - các loại được định nghĩa trong bảng điều khiển admin của OneEntry khi bạn cấu hình dự án của mình. Mô-đun GeneralTypes chỉ lấy danh sách các loại hiện có.
Cách các loại được tạo ra:
OneEntry Admin Panel → Settings → Content Types → Add Page Type → "blog_post"
Khi đã được tạo, bạn có thể lấy chúng
Loại vs. Đánh dấu vs. ID
Phân biệt quan trọng:
| Định danh | Nó là gì | Ví dụ | Tốt nhất cho |
|---|---|---|---|
| Loại | Danh mục/phân loại của thực thể | "blog_post" | Lọc và nhóm |
| Đánh dấu | Định danh duy nhất có thể đọc được | "my_about_page" | Lấy các thực thể cụ thể |
| ID | Định danh số trong cơ sở dữ liệu | 42 | Sử dụng nội bộ |
getAllTypes() trả về TẤT CẢ các loại trên tất cả các thực thể
Phương thức này trả về một danh sách kết hợp các loại từ:
- Trang
- Biểu mẫu
- Khối Sản phẩm
- Sản phẩm
- Bất kỳ thực thể nào khác trong dự án OneEntry của bạn
Không có bộ lọc tích hợp theo danh mục thực thể, vì vậy bạn sẽ cần lọc thủ công:
Các loại phân biệt chữ hoa chữ thường
Luôn sử dụng phù hợp chính xác khi làm việc với các loại
Sử dụng các loại để hiển thị nội dung động
Các loại cho phép nội dung đa hình - logic hiển thị khác nhau dựa trên loại:
📊 Bảng tham khảo nhanh
| Phương thức | Mô tả | Trường hợp sử dụng |
|---|---|---|
| getAllTypes() | Lấy tất cả các loại chung trong hệ thống | Điền dropdown, xác thực các loại |
Cấu trúc GeneralTypeEntity:
{
id: number; // Unique numeric ID
type: string; // Type name (e.g., "blog_post")
}
❓ Câu hỏi thường gặp (FAQ)
Làm thế nào để tôi tạo các loại mới?
Bạn không thể tạo các loại thông qua SDK. Các loại được tạo ra trong Bảng điều khiển Admin của OneEntry:
1. Log in to OneEntry Admin Panel
2. Go to Settings → Content Types
3. Click "Add Page Type" (or Form Type, Product Type, etc.)
4. Enter type name: "blog_post"
5. Save
Now fetch it via SDK:
const types = await GeneralTypes.getAllTypes();
// Returns: [{ id: 1, type: "blog_post" }, ...]
Làm thế nào để tôi lọc các loại theo thực thể (trang, biểu mẫu, sản phẩm)?
Phương thức getAllTypes() trả về tất cả các loại trên tất cả các thực thể. Bạn cần lọc thủ công
Tôi có thể cập nhật hoặc xóa các loại thông qua SDK không?
Không. Mô-đun GeneralTypes là chỉ đọc. Tất cả việc quản lý loại diễn ra trong Bảng điều khiển Admin của OneEntry.
Sự khác biệt giữa ID loại và tên loại là gì?
Khi nào sử dụng mỗi loại:
| Trường | Sử dụng cho | Ví dụ |
|---|---|---|
id | Tham chiếu hệ thống nội bộ | Quan hệ cơ sở dữ liệu |
type | Logic và so sánh mã của bạn | if (page.type === 'blog_post') |
Thực hành tốt nhất: Luôn sử dụng chuỗi type trong mã của bạn, không phải số id (IDs có thể thay đổi giữa các môi trường).
Tôi có thể lưu trữ danh sách các loại không?
Có! Các loại hiếm khi thay đổi, vì vậy việc lưu trữ là được khuyến nghị
Làm thế nào để tôi xử lý các loại bị thiếu một cách nhẹ nhàng?
Luôn xác thực rằng một loại tồn tại trước khi sử dụng nó
Tôi có thể sử dụng các loại cho quyền truy cập/ủy quyền không?
Có! Bạn có thể triển khai kiểm soát truy cập dựa trên loại
💡 Ghi chú quan trọng
⚠️ Các loại là Cụ thể cho Dự án
Các loại được cấu hình trong bảng điều khiển admin của OneEntry và khác nhau giữa các dự án. Không có loại "mặc định" chung - luôn lấy danh sách một cách động:
// ❌ Don't hardcode types
const pageTypes = ['homepage', 'blog_post', 'product_page'];
// ✅ Fetch types dynamically
const allTypes = await GeneralTypes.getAllTypes();
const pageTypes = allTypes.filter(t => t.type.endsWith('_page'));
🔒 Mô-đun Chỉ Đọc
Mô-đun GeneralTypes chỉ đọc các loại. Tất cả việc tạo, sửa đổi và xóa loại diễn ra trong Bảng điều khiển Admin của OneEntry.
🎓 Thực hành tốt nhất
- Lấy các loại một cách động - Đừng mã hóa cứng danh sách loại
- Lưu trữ các loại - Chúng hiếm khi thay đổi, lưu trữ để cải thiện hiệu suất
- Sử dụng chuỗi loại, không phải ID - Tên loại ổn định giữa các môi trường
- Xác thực các loại tồn tại - Kiểm tra xem một loại có hợp lệ trước khi sử dụng
- Sử dụng quy tắc đặt tên - Đặt tên nhất quán giúp việc lọc dễ dàng hơn
- Triển khai hiển thị dự phòng - Xử lý các loại không xác định một cách nhẹ nhàng
- Tài liệu các loại của bạn - Duy trì danh sách các loại và mục đích của chúng
- Sử dụng TypeScript để đảm bảo an toàn loại - Tận dụng giao diện
GeneralTypeEntity
Định nghĩa của mô-đun GeneralTypes
Mô-đun GeneralTypes trong Nền tảng OneEntry được thiết kế để quản lý và lấy các loại chung được sử dụng trong hệ thống. Bằng cách sử dụng hàm defineOneEntry, bạn có thể tạo một đối tượng GeneralTypes để tương tác với các loại này.
Phương thức chính có sẵn là getAllTypes, phương thức này lấy tất cả các đối tượng của loại GeneralTypeEntity từ API.
Phương thức này trả về một Promise mà khi giải quyết sẽ trả về một mảng các đối tượng GeneralTypeEntity, mỗi đối tượng chứa một id và một type.
Các loại này bao gồm nhiều mục đích khác nhau, chẳng hạn như bố cục trang, biểu mẫu, khối sản phẩm, và nhiều hơn nữa, cung cấp sự linh hoạt cho các nhu cầu quản lý nội dung khác nhau.
const { GeneralTypes } = defineOneEntry( "your-project-url", { "token": "your-app-token" });