Thứ Bảy, 3 tháng 3, 2012

__{ideal}__Học viết module trong nukeviet trong 4h

NUKEVIET 3.0 PROFESSIONAL

Xem quy ước tài liệu.

Quy ước thêm:
- Nói file chức năng không đi kèm admin là chỉ các file chức năng của website.


Overview


+Kế thừa các định nghĩa trong việc thiết kế ứng dụng trên nền web từ dự án simplecms:
*các trạng thái của ứng dụng (trạng thái chính & các trạng thái phụ)
            Trong nukeviet, các trạng thái là các modules, trạng thái chính là nhánh mặc định khi chạy vào module (ie: thành phần __construct trong php.) còn các trạng thái phụ là các nhánh khác của module.
*có 2 phần: site chạy ứng dụng (gọi tắt app) & site quản lý admin (gọi tắt admin).
*Nguyên tắc do-half: 1 ứng dụng được cấu thành bởi: 1 hệ thống hỗ trợ dở dang + 1/nhiều ứng dụng sử dụng hệ thống để hoàn thành công việc còn lại.

+Kế thừa ý tưởng coding:
*Mọi thứ được tách ra rõ ràng để quản lý & liên kết chúng thành 1 thể thống nhất.

Khái niệm
Ngôn ngữ giao diện
Mỗi 1 module (or các thành phần khác của hệ thống) sẽ có 1 danh sách các giao diện thể hiển bởi chuỗi text/html là các thành phần hiển thị sử dụng trong module. Chúng được thiết kế vào 1 file với danh sách chuỗi hiển thị & được phân nhóm vào các loại ngôn ngữ như: tiếng việt, tiếng anh...
Quy ước:
-File ngôn ngữ cho admin có tiền tố là admin_.
-có 1 số các ngôn ngữ mặc định: vi.php, admin_vi.php, en.php, admin_en.php… cho module.

file chức năng
 là các nhánh của 1 module. Trong đó có 1 nhánh chính.






Folders Hierarchy
admin/: chứa phần quản lý admin.
 includes: chứa các file sử dụng chung.ie: header, footer.
 Images: chứa ảnh.
 Js: chứa files javascript.
 Modules: chứa các module của ứng dụng.
 Themes: chứa nhiều files tạo thành ứng dụng theme cho ứng dụng.
 Uploads:




URL Querystring

//truy cập vào site
/index.php

//sử dụng ngôn ngữ lúc đầu cài đặt
?lang=vi
?language=vi

//chạy vào tên module nào (tên thư mục chứa module)
?nv=tenModule



//chạy vào tên file chức năng của module
?op=tenChucNang





Module overview

Như đã biết phần quan trọng nhất của nukeviet là viết module. Đây là hạt nhân của ứng dụng.

-Mỗi 1 module là 1 thư mục. Tên module chính là tên thư mục của module & nó có thể được đổi tên cho thân thiện hơn ở phần quản lý admin.
note:
*Tên module hay tên thư mục chứa module không được viết cách.
ie: about/

-1 Module chia làm 2 phần:
*Phần chức năng chính chứa ở thư mục /modules/ten_module.
*Thiết lập giao diện xtemplate ở mục chứa themes: themes/ten_theme/modules/ten_module

Hierarchy:
//----------------------kiến trúc tầng thư mục----------------------------------------------------------------------------
/funcs: chứa các nhánh (các files chức năng) của module chạy trên app.
/functions.php: cấu hình, chứa các hàm cho module & các file chức năng của app.

/language: thư mục chứa các file ngôn ngữ giao diện dành cho adminapp.

/admin: chứa các file chức năng cho admin.
/admin.functions.php: tương tự functions.php, dành cho admin.

/theme.php: chứa các hàm tạo & trả về ngôn ngữ giao diện cho module.

/version: cấu hình module như: phiên bản, cho phép ảo,....

/action: cài đặt cơ sở dữ liệu cho module. File này được chạy khi cài đặt module.
Note: muốn xóa module trong admin phải xóa file này đi.

=> ngoài ra có:
/js: chứa file javascript sử lý cho module.
/blocks: sử lý tính năng kéo thả.
---------------------------------------------------------------------------------------------------------------------------- 
Chúng ta sẽ được tìm hiểu kỹ ở nukeviet APIs.


/version.php



//tạo CSDL cho module
if ( ! defined( 'NV_ADMIN' ) or ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );


$module_version = array( 
    "name" => "tên module", //tên khác của module.
    "modfuncs" => "tên file chức năng chính", //
    "is_sysmod" => 0, //
    "virtual" => 1, //cho phép module ảo hóa hay không?
    "version" => "3.0.01", //phiên bản
    "date" => "Wed, 20 Oct 2010 00:00:00 GMT", //ngày tạo
    "author" => "VINADES (contact@vinades.vn)", //tác giả.
    "note" => "", //ghi chú
    "uploads_dir" => array( 
        $module_name   //thư mục upload có tên là tên của module
    ) 
);



/action.php



Mô tả: Khi cài đặt module, nếu tồn tại file này thì sẽ chạy nó => mục đích cài đặt dữ liệu cho module.


Sau khi cài đặt xong cho module thì ở phần quản lý admin sẽ hiển thị thêm 1 module ở phía dưới cuối.

Và ở trên website sẽ hiển thị thêm 1 menu module đó.

//Địa chỉ URL mặc định đến module chính được khai báo ở version.php.
array("modfuncs" => "main",....);
ie: index.php?language=en&nv=ten_module


note:
- Không được nhập trực tiếp từ CSDL của module, mà thông qua editor của nukeviet.
ie: một số trường auto_number nếu nhập trực tiếp sẽ không chính xác.
- Khi xóa module thì phải xóa file này đi.





 
thứ tự của [file ngôn ngữ, functions, theme] nằm trong file chức năng.
Note: theme nhìn được language & functions, functions nhìn được language, file chức năng nhìn được tất cả => Nên tránh đụng độ khai báo thành phần.

language/file ngôn ngữ

//các file ngôn ngữ cho site
vi.php, en.php

//các file ngôn ngữ cho admin
admin_vi.php, admin_en.php


/theme.php
-Chứa các hàm sử lý & trả về giao diện để sử dụng trong các file chức năng. note: nên sử dụng xtemplate. 



functions.php & admin.functions.php


- Cấu hình cho phép kích hoạt chức năng nào của module.
- Chứa các hàm, biến chung sử lý cho module ở file chức năng (có thể sử lý cả hàm giao diện, tùy bạn).





//kiểm tra hằng hệ thống
if(!defined('NV_SYSTEM'))die('Stop!!!');

//định nghĩa hằng ràng buộc, xác nhận vào các file chức năng của nó.
define('NV_IS_MOD_tenModule',true);

//cho phép kích hoạt chức năng nào.
$allow_funcs=array('main','..',...);

//thêm menu chức năng trong admin (admin.functions.php).
$submenu['ten_file_chuc_nang']="chuỗi hiển thị";



File chức năng
=> Xuất giao diện.


+ module app: functions.php sẽ làm việc với các chức năng chứa ở funcs/


+ module admin: admin.functions.php sẽ làm việc với các chức năng trong admin chứa ở admin/
Note: trong thư mục admin/ còn chứa 1 file functions.php....



//tiêu đề hiển thị tên của module ở phần admin (file chức năng admin)
$page_title="Hiển thị tiêu đề cho module";




//hiển thị đầy đủ nội dung của 1 file chức năng.
include ( NV_ROOTDIR . "/includes/header.php" );
echo nv_site_theme("String");
include ( NV_ROOTDIR . "/includes/footer.php" );


//hiện thị đầy đủ nội dung của 1 file chức năng trong admin (file chức năng admin)
include ( NV_ROOTDIR . "/includes/header.php" );
echo nv_admin_theme("String");
include ( NV_ROOTDIR . "/includes/footer.php" );




/*file chức năng include các thành phần trong: (language, functions, theme.php). Do vậy chúng không chứa các thành phần trùng nhau.
*/
theme.php:
function get($txt){echo $txt;}
file chức năng:
get("Hoang");

Cơ sử dữ liệu cho module


Dữ liệu các bảng lưu trữ cho 1 website sẽ hoạt động trong toàn bộ 1 CSDL & Nukeviet cũng vậy.


//mỗi module thường chỉ tạo 1 bảng với tên dạng. ie:
nv_vi_tenModule








0 nhận xét:

Đăng nhận xét

 
Copyright © hoangit