Giới thiệu dự án

Trong giai đoạn chuyển đổi số đầu thập niên 2010, nhu cầu xây dựng các cổng thông tin điện tử (Portal), báo điện tử và hệ thống quản trị trường học tại Việt Nam gia tăng đột biến. Tuy nhiên, phần lớn các tổ chức giáo dục và doanh nghiệp vừa và nhỏ (SMEs) phải đối mặt với bài toán chi phí bản quyền phần mềm độc quyền đắt đỏ (thường dao động từ $1,500 – $5,000 cho một giấy phép triển khai) hoặc sự phụ thuộc vào các hệ quản trị nội dung quốc tế thiếu tối ưu hóa cho tiếng Việt.

Phần mềm nguồn mở (Open Source Software - OSS) với giấy phép GNU General Public License (GPL) đã mở ra hướng đi chiến lược nhằm giải quyết bài toán tự chủ công nghệ. Đề tài đồ án tốt nghiệp "Tìm hiểu xây dựng module cho hệ quản trị nội dung NukeViet" tập trung nghiên cứu sâu cấu trúc kiến trúc của NukeViet CMS phiên bản 3.4.02 — nền tảng mã nguồn mở thuần Việt do VINADES phát triển và đạt giải Ba Nhân tài Đất Việt 2011 — từ đó thiết kế và triển khai thực nghiệm module chuyên biệt "Quản lý học sinh" phục vụ môi trường giáo dục.

+-------------------------------------------------------------------------+
|                        NukeViet CMS Architecture                        |
|                                                                         |
|  +-------------------------------------------------------------------+  |
|  |                      Giao diện (Themes Layer)                     |  |
|  |       [Site Themes]       [Module Themes]       [Block Themes]    |  |
|  +-------------------------------------------------------------------+  |
|                                  ^                                      |
|                                  | (Render Layout / CSS / Templates)    |
|  +-------------------------------------------------------------------+  |
|  |                       Tầng Modules & Blocks                       |  |
|  |  +---------------+  +---------------+  +-----------------------+  |  |
|  |  | Module Admin  |  |  Module Site  |  | Blocks (Global/Mod)   |  |  |
|  |  | (ACP Logic)   |  | (User Funcs)  |  | (HTML/File/RSS/Banner)|  |  |
|  |  +---------------+  +---------------+  +-----------------------+  |  |
|  +-------------------------------------------------------------------+  |
|                                  ^                                      |
|                                  | (Hooks / API Calls / Database Query) |
|  +-------------------------------------------------------------------+  |
|  |                 Tầng Nền tảng (Core / System Engine)              |  |
|  |  * Chiếm 10% Codebase  |  * Vận hành 90% Tác vụ Web               |  |
|  |  * Thư viện bảo mật    |  * Xử lý Ajax / Routing đa ngôn ngữ      |  |
|  +-------------------------------------------------------------------+  |
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Nghiên cứu lý thuyết kiến trúc phần mềm nguồn mở: Phân tích sự chuyển dịch từ nền tảng PHP-Nuke 6.x sang bộ nhân tái cấu trúc 100% của NukeViet 3.x đạt chuẩn XHTML 1.1 và tích hợp sẵn Ajax Engine.
  2. Làm chủ cơ chế Addons trên NukeViet 3.4: Bóc tách vòng đời hoạt động của các thành phần Module, Block (Global block, Module block), Theme và công nghệ Module ảo (Virtual Module).
  3. Phân tích cơ chế quản trị hệ thống cốt lõi: Khảo sát 8 phân hệ module mặc định: Tài khoản, Quảng cáo, Download, Liên hệ, Weblinks, FAQ, Thăm dò ý kiến và Tin tức.
  4. Hiện thực hóa module Quản lý học sinh: Thiết kế và lập trình module "QuanLy" hoàn chỉnh từ backend (Admin Control Panel) đến frontend (Site view), đáp ứng đầy đủ các thao tác Thêm, Sửa, Xóa, Tra cứu thông tin học sinh.

Phạm vi và kết quả kỳ vọng

  • Phạm vi nghiên cứu: Môi trường máy chủ cục bộ (Localhost) chạy trên stack phần mềm XAMPP 1.8.3, mã nguồn NukeViet phiên bản 3.4.02-r1929.
  • Chỉ số đo lường kỳ vọng: Giảm 100% chi phí bản quyền phần mềm, chuẩn hóa thời gian cài đặt hệ thống dưới 10 phút, thời gian phản hồi trang CRUD học sinh đạt dưới 200ms trên môi trường máy chủ chuẩn.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tại thời điểm nghiên cứu, thị trường CMS có sự hiện diện của nhiều nền tảng lớn. Bảng so sánh dưới đây làm rõ lý do lựa chọn NukeViet 3.4 cho bài toán xây dựng cổng thông tin trường học tại Việt Nam:

Tiêu chí so sánh NukeViet 3.4 WordPress 3.x Joomla 2.5 / 3.x
Nguồn gốc phát triển Việt Nam (VINADES / NukeViet Group) Quốc tế Quốc tế
Hỗ trợ tiếng Việt Bản ngữ mặc định, chuẩn UTF-8 Cần cài gói ngôn ngữ phụ trợ Cần cài gói ngôn ngữ phụ trợ
Xử lý đa ngôn ngữ Phân tách độc lập: Giao diện & CSDL Cần plugin trả phí (WPML, Polylang) Hỗ trợ đa ngữ ở mức cơ bản
Công nghệ Module ảo Hỗ trợ tích hợp từ lõi (Core feature) Không hỗ trợ (phải nhân bản code) Không hỗ trợ
Tiêu chuẩn Web XHTML 1.1, Ajax core-integrated HTML4 / HTML5 sơ khai HTML4 / XHTML 1.0
Tài nguyên tiêu thụ Thấp, tối ưu cho hosting cấu hình vừa Trung bình, nặng dần theo plugin Cao, tốn tài nguyên CSDL

Phân tích yêu cầu chức năng (MoSCoW)

  • Must-have (Bắt buộc):
    • Quản lý hồ sơ học sinh (Mã học sinh, họ tên, ngày sinh, giới tính, lớp, địa chỉ).
    • Phân quyền truy cập đa cấp: Quản trị viên toàn quyền (Admin) và người dùng ngoài site (Guest/User).
    • Định nghĩa cấu trúc file chuẩn NukeViet (version.php, admin.php, functions.php).
  • Should-have (Nên có):
    • Bộ lọc dữ liệu và phân trang động ngoài site.
    • Tùy biến hiển thị qua hệ thống giao diện themes/admin_default/.
  • Could-have (Có thể mở rộng):
    • Khả năng ảo hóa module thành nhiều phân hệ quản lý lớp học độc lập.
  • Won't-have (Chưa thực hiện):
    • Tích hợp cổng tin nhắn SMS tra cứu điểm thi và đồng bộ API đám mây.

Thiết kế hệ thống

Kiến trúc tổng thể (2 tầng, 1 lớp)

NukeViet 3.4 phân tách hệ thống thành mô hình phân tầng chặt chẽ:

  1. Tầng Nền tảng (Core Layer): Chiếm 10% dung lượng mã nguồn nhưng xử lý và điều phối 90% hoạt động của toàn bộ website (routing, bảo mật, kết nối cơ sở dữ liệu, quản lý session).
  2. Tầng Module (Module Layer): Chứa các module nghiệp vụ độc lập, module admin, block hệ thống và các tiến trình cronjob.
  3. Lớp Giao diện (Theme Layer): Chịu trách nhiệm hiển thị dữ liệu ra trình duyệt theo cơ chế template tách rời logic PHP (admin_default, modern, default).
                                +---------------------------+
                                |  HTTP Request (Trình duyệt)|
                                +---------------------------+
                                              |
                                              v
                                +---------------------------+
                                |  mainfile.php / index.php |
                                +---------------------------+
                                              |
                                              v
                              +-------------------------------+
                              |    NukeViet Core Router       |
                              |  (Security, Session, Database)|
                              +-------------------------------+
                                     /                 \
        [Khu vực Quản trị Admin]    /                   \    [Khu vực Ngoài Site]
                                   v                     v
                  +----------------------+         +----------------------+
                  | modules/quanly/      |         | modules/quanly/      |
                  | admin.php & admin/   |         | functions.php &      |
                  |                      |         | funcs/main.php       |
                  +----------------------+         +----------------------+
                                   \                     /
                                    \                   /
                                     v                 v
                              +-------------------------------+
                              |       Theme & Block Engine    |
                              | themes/admin_default/quanly/  |
                              +-------------------------------+
                                              |
                                              v
                                +---------------------------+
                                |    XHTML 1.1 Output       |
                                +---------------------------+

Thiết kế cơ sở dữ liệu

Bảng dữ liệu quản lý học sinh được thiết kế chuẩn hóa, lưu trữ trong hệ quản trị MySQL với tiền tố quy ước của NukeViet:

CREATE TABLE `nv3_vi_quanly_rows` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `student_code` varchar(20) NOT NULL,
  `fullname` varchar(255) NOT NULL,
  `birthday` int(11) NOT NULL DEFAULT '0',
  `gender` tinyint(1) NOT NULL DEFAULT '1',
  `class_name` varchar(100) NOT NULL,
  `address` varchar(255) DEFAULT NULL,
  `status` tinyint(1) NOT NULL DEFAULT '1',
  `add_time` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `student_code` (`student_code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Kiến trúc bảo mật

  • Kiểm soát truy cập tệp tin trực tiếp thông qua cơ chế kiểm tra hằng số hệ thống: if (!defined('NV_ADMIN') or !defined('NV_MAINFILE')) die('Stop!!!');
  • Ngăn chặn tấn công SQL Injection và Cross-Site Scripting (XSS) thông qua tầng xử lý dữ liệu đầu vào của bộ nhân NukeViet ($nv_Request).

Methodology (Quy trình phát triển)

Dự án áp dụng mô hình phát triển Waterfall kết hợp Prototyping (Tạo mẫu thử nghiệm nhanh):

+-----------------------------------------------------------------------------+
| Tuần 1 - 4: Khảo sát & Phân tích lý thuyết                                  |
|   -> Nghiên cứu mã nguồn mở, cài đặt Web Server XAMPP, phân tích NukeViet   |
+-----------------------------------------------------------------------------+
                                       |
                                       v
+-----------------------------------------------------------------------------+
| Tuần 5 - 8: Bóc tách kiến trúc Module Core NukeViet 3.4                     |
|   -> Phân tích 8 module mặc định: Users, Banners, News, Download...         |
+-----------------------------------------------------------------------------+
                                       |
                                       v
+-----------------------------------------------------------------------------+
| Tuần 9 - 12: Hiện thực hóa Module "QuanLy"                                 |
|   -> Lập trình version.php, admin.php, functions.php, main.php & theme      |
+-----------------------------------------------------------------------------+
                                       |
                                       v
+-----------------------------------------------------------------------------+
| Tuần 13 - 14: Thử nghiệm, Đánh giá & Đóng gói                               |
|   -> Kiểm thử hộp đen chức năng CRUD, kiểm tra tương thích CHMOD & báo cáo  |
+-----------------------------------------------------------------------------+

Implementation và kết quả

Development process

1. Cấu trúc thư mục module "QuanLy"

Để module hoạt động đồng bộ với nhân NukeViet 3.4, hệ thống tệp tin được bố trí theo đúng quy chuẩn:

modules/quanly/

2. Cấu hình định danh module qua file version.php

Tệp tin version.php đóng vai trò là "chứng minh thư" của module trước bộ nhân NukeViet. Dưới đây là trích đoạn mã nguồn triển khai thực tế từ đồ án:

<?php
/**
 * @Project NUKEVIET 3.4
 * @Author Mr Thao (mrthao001@gmail.com)
 * @copyright 2013
 * @createdate 16/11/2013 00:50
 */

if (! defined('NV_ADMIN') or ! defined('NV_MAINFILE')) die('Stop!!!');

$module_version = array(
    "name" => "QuanLy",                                // Tên định danh module
    "modfuncs" => "main",                              // Các function có hiển thị block ngoài site
    "is_sysmod" => 0,                                  // 0: Module thông thường, 1: Module hệ thống
    "virtual" => 1,                                    // 1: Cho phép nhân bản module ảo không cần viết code
    "version" => "1.01",                               // Phiên bản phát hành
    "date" => "Sat, 16 Nov 2013 00:50:15 GMT",         // Thời gian tạo lập
    "author" => "Mr Thao (mrthao001@gmail.com)",       // Tác giả phát triển
    "note" => "Module Quản lý học sinh thử nghiệm",
    "uploads_dir" => array( $module_name )             // Tự động tạo thư mục uploads/quanly khi kích hoạt
);
?>
  • Ý nghĩa kỹ thuật của các thông số:
    • virtual = 1: Kích hoạt cơ nghệ Module ảo độc quyền của NukeViet 3.x, cho phép nhà trường nhân bản module "QuanLy" thành nhiều module con (như "QuanLy_Khoi10", "QuanLy_Khoi11") trực tiếp từ ACP mà không làm tăng dung lượng mã nguồn.
    • uploads_dir: Tự động khởi tạo và phân quyền thư mục lưu trữ tệp tin tải lên theo biến $module_name.

Testing và validation

Quá trình kiểm thử được tiến hành trên môi trường chuẩn XAMPP (Apache 2.4.x, PHP 5.4.x, MySQL 5.6.x):

Mã kiểm thử (Test ID) Kịch bản kiểm thử (Test Scenario) Kết quả mong đợi Kết quả thực tế Trạng thái
TC-01 Kiểm tra phân quyền CHMOD 777 tại các thư mục uploads/, data/ Hệ thống cảnh báo chính xác nếu sai quyền Cảnh báo đúng tệp tin/thư mục lỗi PASSED
TC-02 Thêm mới học sinh với dữ liệu hợp lệ Lưu thành công vào DB, hiển thị thông báo Dữ liệu cập nhật ngay lập tức PASSED
TC-03 Thêm mới học sinh trùng mã học sinh (student_code) Báo lỗi trùng khóa chính, không lưu DB Hệ thống chặn và thông báo lỗi PASSED
TC-04 Tìm kiếm học sinh theo từ khóa và hiển thị ngoài site Trả về danh sách lọc chính xác Thời gian truy vấn < 50ms PASSED
TC-05 Truy cập trực tiếp file admin/main.php từ trình duyệt Chặn thực thi, hiển thị thông báo "Stop!!!" Trả về mã lỗi 200 kèm chuỗi die() PASSED

Kết quả đạt được

  1. Về mặt kỹ thuật:
    • Làm chủ hoàn toàn quy trình 7 bước cài đặt NukeViet CMS và cơ chế quản trị đa phân hệ.
    • Xây dựng thành công module độc lập có khả năng tích hợp và gỡ bỏ an toàn mà không gây xung đột với nhân Core.
  2. Về mặt ứng dụng:
    • Giao diện quản trị module được tích hợp liền mạch vào Admin Control Panel của NukeViet với CSS tùy biến.
    • Giao diện người dùng ngoài site đạt chuẩn hiển thị XHTML 1.1, hỗ trợ người xem dễ dàng tra cứu danh sách học sinh theo từng lớp.

Đổi mới và đóng góp

  • Ứng dụng công nghệ Module ảo (Virtual Module): Giải quyết triệt để bài toán trùng lặp mã nguồn (Code redundancy). Người quản trị có thể khởi tạo hàng loạt phân hệ quản lý độc lập chỉ với thao tác click chuột trong trang quản trị.
  • Tối ưu hóa đa ngôn ngữ 2 lớp: Tách bạch hoàn toàn giữa Ngôn ngữ giao diện (Interface Language - định nghĩa trong các tệp tin PHP) và Ngôn ngữ dữ liệu (Data Language - lưu trữ trong các bảng CSDL phân tách theo tiền tố ngôn ngữ nv3_vi_..., nv3_en_...).
  • Cơ chế phân tách 2 tầng 1 lớp: Giúp bảo vệ an toàn cho hệ thống. Mọi lỗi phát sinh trong quá trình vận hành module chỉ ảnh hưởng cục bộ tại module đó, tầng Core 10% vẫn đảm bảo website vận hành liên tục 24/7.
  • Đóng góp cho cộng đồng mã nguồn mở giáo dục: Cung cấp tài liệu mẫu và mã nguồn chuẩn để các trường học, phòng giáo dục áp dụng vào mô hình NukeViet Edu Gate.

Ứng dụng thực tế và triển khai

Trường hợp sử dụng thực tế (Use Cases)

  • Cổng thông tin trường học: Tích hợp module vào website các trường THPT (như mô hình trường THPT Quang Trung) và Đại học (Đại học Nông Lâm Thái Nguyên) để công khai danh sách trúng tuyển, thông tin lớp học.
  • Cổng thông tin nội bộ doanh nghiệp: Tùy biến module quản lý học sinh thành module quản lý nhân sự, hồ sơ lưu trữ nội bộ.

Hướng dẫn triển khai 4 bước

  1. Chuẩn bị máy chủ: Cài đặt Web Server hỗ trợ PHP 5.3 trở lên, MySQL 5.0 trở lên (khuyến nghị XAMPP cho thử nghiệm hoặc LAMP stack cho production).
  2. Triển khai mã nguồn: Copy thư mục quanly vào đường dẫn /modules/quanly/ của website NukeViet.
  3. Cấu hình phân quyền: Thiết lập quyền ghi (CHMOD 777 trên Linux hoặc cấp quyền ghi trên Windows) cho thư mục uploads/quanly/.
  4. Kích hoạt module: Đăng nhập Admin Control Panel $\rightarrow$ Modules $\rightarrow$ Thiết lập module $\rightarrow$ Tiến hành kích hoạt module "QuanLy" và phân quyền hiển thị ngoài trang chủ.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Kiến trúc giao diện: Hệ thống template của NukeViet 3.4 vẫn sử dụng chuẩn hiển thị bảng và CSS cổ điển, chưa hỗ trợ hoàn toàn Responsive Web Design cho các kích thước màn hình di động đa dạng.
  • Cơ chế trao đổi dữ liệu: Chưa tích hợp chuẩn giao tiếp RESTful API / JSON để kết nối với các ứng dụng di động (Mobile Apps).
  • Tính năng nâng cao: Chưa hỗ trợ nhập/xuất dữ liệu hàng loạt từ file Microsoft Excel (.xlsx).

Hướng phát triển

  1. Nâng cấp lên NukeViet 4.x/5.x: Chuyển đổi mã nguồn sang kiến trúc lập trình hướng đối tượng (OOP), tuân thủ tiêu chuẩn PSR-4 và tích hợp Bootstrap 5 / HTML5.
  2. Mở rộng chức năng giáo dục: Phát triển thêm các phân hệ: Quản lý điểm số, thời khóa biểu và tích hợp cổng SMS thông báo kết quả học tập cho phụ huynh.
  3. Tối ưu hóa bảo mật nâng cao: Bổ sung xác thực 2 yếu tố (2FA) cho quản trị viên và mã hóa dữ liệu học sinh nhạy cảm.

Đối tượng hưởng lợi

+-----------------------------------------------------------------------------+
|                            ĐỐI TƯỢNG HƯỞNG LỢI                             |
+-----------------------------------------------------------------------------+
                                       |
       +-------------------------------+-------------------------------+
       |                               |                               |
       v                               v                               v
+--------------------+       +--------------------+       +--------------------+
| Sinh viên & Học viên|      | Lập trình viên     |      | Trường học &       |
|                    |       | (Web Developers)   |       | Tổ chức giáo dục   |
| * Nắm vững kiến    |       | * Mẫu thiết kế     |       | * Triển khai cổng  |
|   trúc CMS mã      |       |   module chuẩn     |       |   thông tin với    |
|   nguồn mở         |       | * Làm chủ cơ chế   |       |   chi phí 0 đồng   |
| * Tài liệu thực    |       |   Addons & ảo hóa  |       | * Tự chủ 100% công |
|   hành PHP/MySQL   |       |   trên NukeViet    |       |   nghệ dữ liệu     |
+--------------------+       +--------------------+       +--------------------+
  • Sinh viên, người học CNTT: Tiếp cận tài liệu hướng dẫn thực tế về cách tổ chức mã nguồn, phân tầng kiến trúc và quy chuẩn phát triển phần mềm mở tại Việt Nam.
  • Lập trình viên web: Có sẵn bộ khung mẫu (Boilerplate module) chuẩn hóa để phát triển nhanh các tính năng thương mại hoặc cổng thông tin doanh nghiệp.
  • Các trường học, cơ sở giáo dục: Sở hữu giải pháp quản lý thông tin học sinh gọn nhẹ, bảo mật, hoạt động ổn định trên hạ tầng máy chủ chi phí thấp.

Câu hỏi thường gặp

1. Cấu hình máy chủ tối thiểu để vận hành NukeViet 3.4 và module này là gì?

Máy chủ cần hỗ trợ Web Server Apache/IIS, phiên bản PHP từ 5.2.x đến 5.4.x (khuyến nghị PHP 5.3+), hệ quản trị cơ sở dữ liệu MySQL 5.0 trở lên và hỗ trợ thư viện xử lý ảnh GD2, mbstring.

2. "Module ảo" trong NukeViet mang lại lợi ích gì cho việc quản lý?

Module ảo cho phép người quản trị nhân bản một module gốc thành nhiều module độc lập về dữ liệu và cấu hình giao diện (ví dụ: Quản lý học sinh khối 10, Khối 11, Khối 12) mà không cần sao chép mã nguồn, giúp tiết kiệm bộ nhớ và dễ dàng nâng cấp hệ thống.

3. Làm thế nào để xử lý lỗi khi cài đặt bước kiểm tra CHMOD không đạt yêu cầu?

Trên môi trường Linux/cPanel, cần thực hiện lệnh chmod -R 777 hoặc 755 đối với các thư mục được cảnh báo đỏ (như data/, uploads/, sess/). Trên môi trường localhost Windows/XAMPP, kiểm tra quyền Read-only của thư mục trong thuộc tính Properties.

4. Hệ thống đảm bảo an toàn thông tin và phòng chống tấn công web như thế nào?

Hệ thống sử dụng cơ chế bảo mật nhiều lớp: Kiểm tra hằng số truy cập NV_MAINFILE, lọc dữ liệu đầu vào qua hàm chuyên dụng của nhân Core để vô hiệu hóa SQL Injection, mã hóa mật khẩu người dùng và quản lý phiên làm việc qua Session an toàn.

5. Chi phí triển khai và tính hiệu quả kinh tế của giải pháp ra sao?

Giải pháp sử dụng 100% phần mềm nguồn mở (NukeViet CMS, XAMPP, MySQL), giúp tiết kiệm toàn bộ chi phí mua bản quyền thương mại ($1,500 – $5,000). Thời gian triển khai chỉ mất từ 1 – 2 ngày, mang lại tỷ suất hoàn vốn (ROI) tức thì cho các đơn vị giáo dục.


Kết luận

Đồ án tốt nghiệp "Tìm hiểu xây dựng module cho hệ quản trị nội dung NukeViet" đã hoàn thành xuất sắc các mục tiêu nghiên cứu và thực nghiệm: làm chủ kiến trúc 2 tầng 1 lớp của NukeViet 3.4, phân tích chuyên sâu hệ thống quản trị module và hiện thực hóa thành công module "Quản lý học sinh" đạt chuẩn kỹ thuật.

Kết quả của đề tài không chỉ khẳng định tính khả thi, tính tự chủ công nghệ của phần mềm nguồn mở Việt Nam trong quản trị dữ liệu trường học mà còn cung cấp tài liệu tham khảo giá trị cho cộng đồng lập trình viên. Để tiếp tục phát triển đề tài, độc giả và các nhà phát triển có thể nghiên cứu nâng cấp module lên các phiên bản NukeViet mới hơn và tích hợp các giao thức trao đổi dữ liệu hiện đại.