III. Lập trình đơn giản NukeViet1.0
2. Module
2.1. Các quy tắc khi lập trình Module
Việc lập trình một Module khá dễ nếu bạn biết PHP, chỉ cần nắm thêm một số quy tắc sau:
a, Mỗi file viết cho Module đều phải bắt đầu bằng đoạn mã: Code:
if (!eregi("modules.php", $PHP_SELF)) {
die ("You can't access this file directly... <br>Rat tiec, ban khong the truy cap truc tiep file nay!");
}
Đoạn mã này có tác dụng cấm người dùng truy cập trực tiếp đến file. Buộc họ phải sử dụng hệ thống link của bạn nhằm đảm bảo và kiểm soát quá trình hiển thị thông tin.
b, Hệ thống NukeViet đã được thiết kế để tự động nhận dạng các file ngôn ngữ.
Để phát huy sức mạnh đa ngôn ngữ trên hệ thống NukeViet, bạn hãy tạo một thư
mục có tên "language" bên trong thư mục chính của Module. Sau đó, trong mỗi file viết cho Module hãy chèn đoạn mã:
Code:
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__)); get_lang($module_name);
Đoạn mã này sẽ chèn file ngôn ngữ (nếu có) phù hợp với thiết đặt trong cookie của người truy cập.
Các file ngôn ngữ phải có tên như sau: lang-vietnamese.php : tiếng Việt lang-english.php: tiếng Anh lang-french.php: Pháp lang-german.php : Đức
lang-chinese.php : Trung Hoa lang-russian.php : Nga
lang-thai.php: Thái Lan lang-italian.php: Ý …
c, Không sử dụng cách trống trong tên thư mục Module, thay vào đó hãy sử
dụng ký tự “_”
d, Theo hướng dẫn của hệ thống PHP-Nuke, liên kết tới file của Module phải có cú pháp như sau: http://www.yoursite.com/modules.php?mop=modload&name=Ten_Module&file =index Với hệ thống NukeViet 1.0 còn có thể sử dụng cấu trúc link dạng: http://localhost/home/modules.php?name=Ten_Module&file=index Trong đó:
Ten_Module: tên của Module (tên thư mục chứa Module)
Index: tên file của Module.
Nếu bạn cần liên kết tới một hàm xác định tới bất kỳ file nào của module thì chỉ
việc thêm vào URL ở trên một đoạn mã sau:
&switchname=name
Như vậy, nếu bạn khai báo một sự chuyển đổi dạng : Code: switch($func) { case "func-one": funct-one(); break; } Bạn sẽ gọi nó qua link : http://www.yoursite.com/modules.php?mop=modload&name=Ten_module&file =index&func=func-one
Nếu hàm của bạn cần nhận những biến những giá trị, sự chuyển đổi của bạn sẽ giống như sau: Code: switch($func) { case "func-one": funct-one($xid, $xname); break; } Và link để tới đó là : http://www.yoursite.com/modules.php?mop=modload&name=Ten_Module&file =index&func=func-one&xid=$xid&xname=$xname
Nếu bạn cần sử dụng các form bên trong Module, Bạn hãy sử dụng mã này: Code:
<form action="modules.php?mop=modload&name=Ten_Module &file=index&func=Ten_ham" method="post">
... </form>
nhưng nhớ không sử dụng những tên những biến kiểu như "name" và/hoặc “file” và sử dụng biến "$mop".
Chú ý quan trọng:
Bạn cần biết rằng hệ thống module luôn có sẵn các biến, chúng là :
$name: Khai báo tên Module
$file: Khai báo tên file đang sử dụng
$mop: Sử dụng modules.php cho sự chuyển đổi
$index: Thêm hoặc loại bỏ những khối bên phải
$modload: Gọi
Một điều thú vị ở hệ thống NukeViet là việc cho phép sử dụng các cột Block phải và trái trong hệ thống Module hay không. Việc này thực hiện rất dễ
dàng bằng cách ở đầu file, bạn khai báo biến: Code:
$index = 1;
Nếu giá trị là “1”, module của bạn sẽ hiện cả cột Block phải, nếu giá trị là “0”, sẽ chỉ hiển thị những Block trái.
Nhớ rằng bạn luôn có thể sử dụng hệ thống các file phiên dịch ngôn ngữ
cho Module.
Cảnh báo:
Để website làm việc với các trình duyệt sử dụng chuẩn HTML 4.01 (hoặc các phiên bản cũ hơn) thì tất cả các ký tự "&" trong URL viết cho Module phải
được thay bằng thẻ "&". Ví dụ URL:
<a href="modules.php?op=modload&name=FAQ&file=index">
Phải được viết thành:
<a href="modules.php?op=modload&name=FAQ&file=index">
Nếu không, website của bạn sẽ không tương thích với chuẩn HTML 4.01.