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
$mod_active:
Kiểm tra tình trạng mô đun
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 = ( defined('MOD_BLTYPE') ) ? MOD_BLTYPE : 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.