Nhảy đến nội dung

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 nghĩ về nó như một 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ế:

Ứng dụng blog của bạn lấy tất cả các loại trang:
- "homepage" → Hiển thị thanh trượt bài viết nổi bật
- "blog_post" → Hiển thị bố cục bài viết với bình luận
- "about_page" → Hiển thị thẻ thành viên nhóm
- "contact_page" → Hiển thị biểu mẫu liên hệ

✨ Khái niệm chính

Cấu trúc Hệ thống 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
Tranghomepage, blog_post, product_page, landing_pageĐịnh nghĩa bố cục và chức năng của trang
Biểu mẫucontact_form, survey, registration, feedbackPhân loại các mục đích biểu mẫu khác nhau
Khối Sản Phẩmhero_section, gallery, text_block, video_embedCác khối xây dựng cho trang sản phẩm
Sản phẩmphysical_product, digital_product, service, subscriptionPhâ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; // ID số duy nhất (ví dụ: 1, 2, 3)
type: string; // Tên loại (ví dụ: "blog_post", "contact_form")
}

Khi nào sử dụng GeneralTypes

Trường hợp sử dụngTạ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ạiCho 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ạiCho 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 Quản trị OneEntry

Bạn không tạo các loại thông qua SDK - các loại được định nghĩa trong bảng điều khiển quản trị 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 tạo các loại:

Bảng điều khiển Quản trị OneEntry → Cài đặt → Các loại nội dung → Thêm loại trang → "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 danhNó là gìVí dụTốt nhất cho
LoạiDanh 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ệu42Sử dụng trong hệ thố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 khớp chính xác chữ hoa chữ thường 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ứcMô 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; // ID số duy nhất
type: string; // Tên loại (ví dụ: "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 trong Bảng điều khiển Quản trị OneEntry:

1. Đăng nhập vào Bảng điều khiển Quản trị OneEntry
2. Đi tới Cài đặt → Các loại nội dung
3. Nhấp vào "Thêm loại trang" (hoặc loại biểu mẫu, loại sản phẩm, v.v.)
4. Nhập tên loại: "blog_post"
5. Lưu

Bây giờ lấy nó thông qua SDK:
const types = await GeneralTypes.getAllTypes();
// Trả về: [{ 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 GeneralTypeschỉ đọc. Tất cả việc quản lý loại diễn ra trong Bảng điều khiển Quản trị 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ườngSử dụng choVí dụ
idTham chiếu hệ thống nội bộQuan hệ cơ sở dữ liệu
typeLogic và so sánh trong mã của bạnif (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 (các ID 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ữ đượ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 xác thực/quyền truy cập không?

Có! Bạn có thể triển khai kiểm soát truy cập dựa trên loại


💡 Lưu ý 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 quản trị OneEntry của bạn và khác nhau giữa các dự án. Không có loại "mặc định" toàn cầu - luôn lấy danh sách một cách động:

// ❌ Đừng mã hóa cứng các loại
const pageTypes = ['homepage', 'blog_post', 'product_page'];

// ✅ Lấy các loại một cách động
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 Quản trị 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"
}
);