Joomla Bài học 9: Mở rộng dữ liệu động không cần code với Custom Fields và Field Groups
Chào mừng bạn đến với Joomla Bài học 9. Trong bài học này, chúng ta sẽ tìm hiểu cách sử dụng hệ thống Custom Fields tích hợp sẵn trong Joomla 5 để biến các bài viết thông thường thành các trang dữ liệu có cấu trúc chuyên nghiệp, cách nhóm chúng lại bằng Field Groups và cách gọi chúng ra ngoài giao diện.
1. Bản chất và sức mạnh của Custom Fields trong Joomla
Trước đây, để thêm các trường thông tin mở rộng cho bài viết (ví dụ: một trang bất động sản cần thêm trường Diện tích, Giá bán, Số phòng ngủ), lập trình viên bắt buộc phải viết component riêng hoặc dùng các plugin bên thứ ba phức tạp.
Từ phiên bản Joomla 3.7 và được tối ưu cực kỳ mạnh mẽ ở Joomla 5, Custom Fields đã trở thành tính năng cốt lõi (Core feature):
-
Hoạt động linh hoạt: Không chỉ áp dụng cho Articles (
com_content), Custom Fields còn hỗ trợ cho Categorie (Danh mục), Contacts (Liên hệ), và Users (Người dùng). -
Đa dạng kiểu dữ liệu (Field Types): Hỗ trợ hơn 15 kiểu dữ liệu khác nhau như: Text (Văn bản ngắn), Textarea (Văn bản dài), Editor, Integer (Số nguyên), List (Danh sách chọn), Checkboxes, Radio, Calendar (Chọn ngày tháng), URL, User, và đặc biệt là Media (Chọn file/ảnh).
2. Cách thiết lập Field Groups (Nhóm trường) và Custom Fields
Để quản lý khoa học khi một bài viết có quá nhiều trường thông tin mở rộng, chúng ta cần phân chia chúng vào các nhóm.
Bước 1: Tạo Field Groups (Nhóm trường)
-
Truy cập trang quản trị Administrator -> Content -> Field Groups -> Bấm New.
-
Đặt tên nhóm (Ví dụ: Thông số bất động sản hoặc Thông số kỹ thuật sản phẩm).
-
Nhóm này sẽ đóng vai trò như một tab riêng biệt khi bạn vào trang soạn thảo bài viết, giúp giao diện không bị rối mắt.
Bước 2: Tạo Custom Fields (Trường tùy chỉnh)
-
Truy cập Content -> Fields -> Bấm New.
-
Điền các cấu hình quan trọng:
-
Title: Tên trường (Ví dụ: Giá bán, Diện tích sàn, Tình trạng).
-
Type: Chọn kiểu dữ liệu phù hợp (Ví dụ chọn
Integercho giá tiền, hoặcListcho tình trạng). -
Name (Alias): Hệ thống tự sinh hoặc bạn tự đặt bằng tiếng Anh không dấu (dùng để gọi trong code code template, ví dụ:
gia_ban). -
Field Group: Chọn nhóm vừa tạo ở Bước 1 để đưa trường này vào đúng tab.
-
Assigned Categories: Bạn có thể chọn áp dụng trường này cho Tất cả danh mục hoặc Chỉ định cụ thể một danh mục (Ví dụ: Chỉ danh mục "Bất động sản" mới có các trường này, danh mục "Tin tức" thông thường sẽ ẩn đi).
-
3. Nhập liệu bài viết với Custom Fields
Khi bạn quay lại phần quản lý bài viết (Content -> Articles -> Add New):
-
Phía dưới hoặc bên cạnh trình soạn thảo, bạn sẽ thấy xuất hiện một tab mới mang tên của Field Group mà bạn đã cấu hình.
-
Người quản trị nội dung chỉ việc điền các thông số vào ô tương ứng (Ví dụ: Nhập
2.5 tỷvào ô Giá bán, chọnĐang mở bánở ô Tình trạng) mà không cần quan tâm đến HTML hay cơ sở dữ liệu bên dưới.
4. Kỹ thuật hiển thị Custom Fields ra ngoài Frontend
Joomla cung cấp cơ chế tự động hiển thị hoặc gọi thủ công cực kỳ linh hoạt cho lập trình viên:
Cách 1: Tự động hiển thị (Automatic Display)
Trong phần cấu hình của từng Field, mục Automatic Display cho phép bạn chọn:
- After Content hoặc Before Content: Joomla sẽ tự động render giá trị của trường đó lên phía trên hoặc phía dưới nội dung bài viết một cách tự động.
Cách 2: Gọi thủ công trong file Layout / Template (Dành cho Lập trình viên)
Nếu bạn muốn thiết kế giao diện riêng (ví dụ đưa giá tiền vào một khung nổi bật, diện tích vào icon riêng), bạn có thể gọi trực tiếp thông qua biến $item->jcfields trong file template chi tiết bài viết (com_content/article/default.php hoặc qua kỹ thuật Template Overrides):
PHP
// Duyệt qua các Custom Field của bài viết hiện tại
foreach ($this->item->jcfields as $field) {
echo '<div class="custom-field-item">';
echo '<strong>' . htmlspecialchars($field->label, ENT_COMPAT, 'UTF-8') . ': </strong>';
echo '<span>' . $field->value . '</span>';
echo '</div>';
}
// Hoặc gọi chính xác một Field cụ thể dựa theo tên (Alias)
// Sử dụng hàm phụ trợ hoặc mảng định danh của Joomla fields
5. Tổng kết bài học
-
Hiểu rõ cách tận dụng Custom Fields và Field Groups để mở rộng cấu trúc dữ liệu bài viết mà không cần viết code hay tạo bảng database phụ.
-
Nắm bắt các kiểu dữ liệu phong phú mà Joomla hỗ trợ sẵn.
-
Biết cách hiển thị dữ liệu linh hoạt bằng cả hai phương pháp: Tự động qua hệ thống hoặc gọi thủ công qua code template.
Trong Bài học 10, chúng ta sẽ hoàn thiện phần quản lý nội dung nâng cao với Workflows (Luồng công việc quy trình xuất bản).
All rights reserved