Tải bản đầy đủ (.doc) (43 trang)

Hướng dẫn viết module cho nukeviet 3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (245.21 KB, 43 trang )

Hướng dẫn viết module cho nukeviet 3.x
Để dễ thao tác các bạn hãy làm giống mình phần code (số dòng)
Trong khuôn khổ bài viết này mình sẽ trình bày với các bạn cấu trúc cơ bản, công dụng cũng như chức
năng của từng file trong thư mục module và cách viết một module chi tiết từ đơn giản tới phức tạp.
-- Cấu trúc một module, chức năng các file, các file, floder bắt buộc phải có.
-- Cách viết một module đơn giản chỉ chứa file PHP.
-- Mở rộng kết hợp file PHP riêng ngoài các file bắt buộc phải có.
-- Làm việc với file ngôn ngữ lang.
-- Sử dụng xtemplate.
-- Mở rộng thêm các file thông tin module, RSS
-- Sử dụng javscript và ajax cho module (phần AJAX các bạn xem tại viewtopic.php?f=117&t=15403).
-- Sử dụng lớp (class) đã được xây dựng sẵn.
-- Tích hợp thêm các phần mở rộng
Trước khi vào phần hướng dẫn mình xin trình bày một số quy ước. Các file PHP được bắt đầu với phần
thông tin về tác giả, bản quyền, ngày viết, email tác giả.. VÍ dụ như:
/**
* @Project NUKEVIET-MUSIC
* @Author Phan Tan Dung ()
* @copyright 2011
* @createdate 26/01/2011 09:17 AM
*/

Tương tự cho các file js
/* *
* @Project NUKEVIET-MUSIC
* @Author Phan Tan Dung ()
* @copyright 2011
* @createdate 26/01/2011 09:17 AM
*/

Tên module tốt nhất các bạn chỉ đặt tên bằng chữ cái không chứa các kí tự đặc biệt.


Bây giờ ta vào phần chi tiết.
---- CẤU TRÚC CƠ BẢN CỦA MỘT MODULE
Bao gồm các file và thư mục sau:
- admin.functions.php
- version.php
- funcs
- funcs/main.php
- admin
- admin/main.php
- functions.php
Với nhiêu đó là ta đã có một module đơn giản (không có CSDL) có thể hoạt động rồi. Như vậy muốn
viết một module đầu tiên ta tạo một thư mục có tên là tên của module trong thư mục modules. Sau đó
lần lượt tạo các thư mục, file như trên vào thư mục vừa tạo.
Mình sẽ ví dụ đây là module quanlihs.

1


Chức năng của các file như sau:
-- file version.php: file này có chức năng khai báo tiêu đề module, các funcs có block, tác giả module,
thông tin phiên bản, cấu trúc thư mục trong thư mục uploads.
-- File admin.functions.php: File này thường chứa các function, hằng dùng trong admin
-- File function.php: File này thường chứa các function, hằng dùng cho ngoài site
-- admin/main.php: File này sẽ thể hiện nội dung của module phần admin
-- funcs/main.php: FIle này sẽ thể hiện nội dung (trang chính) của module bên ngoài site.
Thứ tự khởi động một module như sau: Khi module được chạy thì tùy theo admin hay ngoài site mà file
admin.functions.php hay file function.php được chạy trước sau đó là các file trong thư mục admin hay
funcs được chạy tiếp theo mặc định sẽ là file main.php.
Ta thường thấy url trang web nukeviet (chưa bật rewrite) có dạng http://yourdomain/index.php?
lang=vi&nv= ... =listenone

Trong đó lang chính là ngôn ngữ của site, nv là module đang chạy, op chính là funcs đang chạy (ở đây
là listenone). Giá trị op này chính là tên của funsc trong thư mục funsc hay admin. Nếu trên url mà
khuyết phần op= có nghĩa funcs main.php đang được chạy.
Cấu trúc url như trên là cấu trúc cơ bản. Giá trị op ta có thể thay đổi ví dụ như
. Ta sẽ tìm hiểu sau.
Bây giờ chúng ta bắt đầu viết một module đơn giản (không có CSDL) để xuất ra dòng chữ "XIN
CHÀO CÁC BẠN" bên trong admin và ngoài site.
Đầu tiên tạo một thư mục (là tên module) trong thư mục modules rồi thêm vào đó các file và thư mục
sau:
- admin.functions.php
- version.php
- funcs
- funcs/main.php
- admin
- admin/main.php
- functions.php
file version.php có nội dung:
/**
* @Project NUKEVIET-MUSIC
* @Author Phan Tan Dung ()
* @copyright 2011
* @createdate 05/12/2010 09:47
*/
if ( ! defined( 'NV_ADMIN' ) or ! defined( 'NV_MAINFILE' )) die( 'Stop!!!' );
$module_version = array(
"name" => "QuanLyHocSinh", // Tieu de module
"modfuncs" => "main" ,
"is_sysmod" => 0,
"virtual" => 1,

"version" => "3.0.01",
"date" => "Wed, 26 Jan 2011 12:47:15 GMT",

2


"author" => "PHAN TAN DUNG (email: )",
"note"=>"",
"uploads_dir" => array(
$module_name
)
);
?>

Dòng này: if ( ! defined( 'NV_ADMIN' ) or ! defined( 'NV_MAINFILE' )) die( 'Stop!!!' ); các bạn để
nguyên ở mọi module
-"modfuncs" => "main": Tên các funcs trong thư mục funcs có block khi hoạt động bên ngoài site. Đối
với các funcs không có block ví dụ như để xử lý AJAX, gửi email (popup) thì không cần khai báo. Các
funcs được phân cách nhau bởi dấu "," ví dụ:
"modfuncs" => "main, funcs1, funcs2, funcs3" ,

-"is_sysmod" => 0, : Có phảo module hệ thông hay không 0: không 1: có.
-"virtual" => 1: CHo phép ảo hóa module không 0: không 1: có
-date,author, version: thông tin ngày , tác giả, phiên bản module.
-uploads_dir: Khai báo cấu trúc thư mục trong thư mục uploads. Với khai báo như trên thì khi kích hoạt
module hệ thông sẽ tạo một thư mục có tên là tên của module trong thư mục upload (biến
$module_name được hiểu là tên module)
file admin.functions.php có nội dung như sau:
/**

* @Project NUKEVIET-MUSIC
* @Author Phan Tan Dung ()
* @Copyright 2011
* @createdate 26/01/2011 10:08 AM
*/
if ( ! defined( 'NV_ADMIN' ) or ! defined( 'NV_MAINFILE' ) or !
defined( 'NV_IS_MODADMIN' ) ) die( 'Stop!!!' );
$allow_func = array('main');
define( 'NV_IS_MUSIC_ADMIN', true );
?>

- $allow_func = array('main'); : biến $allow_func là một mảng một chiều chứa các funcs rong thư mục
admin cho phép chạy. Ở ví dụ này chỉ cho một funcs là main.php. Các funcs không được khai báo
trong biến này khi chạy sẽ báo lỗi "Bạn không có quyền truy cập chức năng này."
- define( 'NV_IS_QUANLY_ADMIN', true ); Dòng này sẽ khởi tạo một hằng dùng cho module. Các
funcs như main.php sẽ kiểm tra giá trị hằng này nếu đúng sẽ chạy ngược lại sẽ báo lỗi "Stop!!!".
file function.php các bạn thêm như sau:

/**
* @Project NUKEVIET-MUSIC
* @Author Phan Tan Dung ()
* @copyright 2011
* @createdate 26/01/2011 10:10 AM
*/
if (!defined('NV_SYSTEM')) die('Stop!!!');
define('NV_IS_MOD_QUANLY', true);
?>

3



Với module đơn giản như ví dụ này thì file này chỉ có chức năng tạo một hằng để dùng bên ngoài site
thôi.
Tạo file main.php trong thư mục admin với nội dung như sau:
/**
* @Project NUKEVIET-MUSIC
* @Phan Tan Dung ()
* @Copyright (C) 2011
* @Createdate 26-01-2011 14:43
*/
if ( ! defined( 'NV_IS_QUANLY_ADMIN' ) ) die( 'Stop!!!' );
$page_title = "Trang chính";
$contents = "Xin chào các bạn";
include (NV_ROOTDIR . "/includes/header.php");
echo nv_admin_theme($contents);
include (NV_ROOTDIR . "/includes/footer.php");
?>

- Biến $page_title là tiêu đề của funcs hiện tại.
- Tất cả nội dung sẽ được lưu vào một biến $contents sau đó sẽ được xuất ra sau khi gọi file
header.php. Phần :
include (NV_ROOTDIR . "/includes/header.php");
echo nv_admin_theme($contents);
include (NV_ROOTDIR . "/includes/footer.php");

Các bạn giữ nguyên mọi module (trong admin)
Tương tự tạo file main.php lưu vào thư mục funcs với nội dung như sau:

/**
* @Project NUKEVIET-MUSIC
* @Author Phan Tan Dung
* @Copyright (C) 2011
* @Createdate 26/01/2011 10:26 AM
*/
if ( ! defined( 'NV_IS_MOD_QUANLY' ) ) die( 'Stop!!!' );
$page_title = $module_info['custom_title'];
$key_words = $module_info['keywords'];
$contents = "Xin chào các bạn";
include ( NV_ROOTDIR . "/includes/header.php" );
echo nv_site_theme( $contents );
include ( NV_ROOTDIR . "/includes/footer.php" );
?>

4


OK như vậy ta đã tạo xong một module đơn giản để xuất ra dong chữ "Xin chào các bạn" bên
trong admin lẫn ngoài site. Bây giờ các bạn vào phần thiết lập module mới kích hoạt modlue vừa tạo
rồi vào phần quản lí của module và noài site bạn sẽ thấy kết quả.
------------Với module Đơn giản này ta có thể sử dụng để inframe trang khác hoặc liên kết sang trang khác
khi ấn vào menu. Ví dụ thay file main.php bằng:
/**
* @Project NUKEVIET-MUSIC
* @Author Phan Tan Dung
* @Copyright (C) 2011
* @Createdate 26/01/2011 10:26 AM
*/

if ( ! defined( 'NV_IS_MOD_QUANLY' ) ) die( 'Stop!!!' );
$page_title = $module_info['custom_title'];
$key_words = $module_info['keywords'];
$contents = '