Khác với những phiên bản trước đây của hệ thống nukeviet, trong phiên bản mới này việc đóng gói module được tối ưu, các file và folder của module đều được đưa vào trong 1 thư mục.
Một module example có cơ sở dữ liệu và có phần quản trị cho người dùng có cấu trúc căn bản như sau:
admin2. Cách viết một module đơn giản
—-.htaccess
—-main.php
modules
funcs
—-index.html
—-.htaccess
—-main.php
language
—-index.html
—-.htaccess
—-vi.php
—-vi_admin.php
js
—-.htaccess
—-javascript.js
action.php
admin.functions.php
functions.php
version.php
index.html
.htaccess
Chú ý: Tên module mới chỉ gồm các chữ cái, số và dấu gạch ngang, bắt buộc phải bắt đầu bằng một chữ cái.
- Trong bài viết này chúng ta xây dựng một module đơn giản để xuất ra nội dung,:
Hello world!!!
- Các bước chuẩn bị:
Tạo các file và folder như sau:
$ modules/example/index.htmlmodules/example/functions.php
$ modules/example/funcs/main.php
$ modules/example/funcs/index.html
$ modules/example/admin.functions.php
$ modules/example/functions.php
$ modules/example/theme.php
$ modules/example/version.php
- “modfuncs” => “main”, là danh sách các các function tương ứng với tên các file trong folder funcs của module.
- “virtual” => 0: Module không được ảo hóa
- “virtual”=>1: Module được ảo hóa. modules/example/funcs/main.php
http://mydomain.com/index.php?lang=vi&nv=example
Nếu bạn muốn thêm 1 func mới cho module bạn tạo mới 1 file (new.php) trong thư mục:
modules/example/funcs/
Sau đó bạn cần đăng nhập và khu vực quản trị kích hoạt các function này.
3. Thêm link quản lý module vào menu quản trị
modules/example/admin/functions.php
tương ứng với các file functions.php, version.php bắt buộc phải chứa file: admin.functions.php
Chú ý: Để các function có thể hoạt động được thì function phải được gán vào mảng $allow_func
Khi đó danh mục các file của module gồm:
$ modules/example/admin/index.html4. Thêm 1 submenu quản lý module trong admin
$ modules/example/admin/functions.php
$ modules/example/admin/main.php
$ modules/example/index.html
$ modules/example/funcs/main.php
$ modules/example/funcs/index.html
$ modules/example/functions.php
$ modules/example/version.php
Thay đổi lại file modules/example/admin.functions.php
Sửa lại nội dung file modules/example/admin.functions.php
Ta tạo file ngôn ngữ tiếng Việt cho module example:
modules/example/language/ admin_vi.php
$ modules/example/admin/index.html6. Kết nối với cơ sở dữ liệu
$ modules/example/admin/main.php
$ modules/example/index.html
$ modules/example/funcs/main.php
$ modules/example/funcs/index.html
$ modules/example/admin.functions.php
$ modules/example/functions.php
$ modules/example/theme.php
$ modules/example/version.php
$ modules/example/language/vi_admin.php
$ modules/example/language/en_admin.php
modules/example/action.php
sở dữ liệu sẽ được tạo tự động.
Sửa lại file modules/example/admin/add.php
21 | $query = "INSERT INTO `" . NV_PREFIXLANG . "_" . $module_data . "` (`id`, `title`) VALUES (NULL, " . $db->dbescape( $title ) . ")"; |
25 | Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABL E . "=" . $module_name . "" ); |
59 | $contents .= " <input type=\"hidden\" name =\"" . NV_NAME_VARIABLE . "\"value=\"" . $module_name . "\" />"; |
27 | <a href=\"index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_ VARIABLE . "=edit&id=" . $row['id'] . "\">" . $lang_module['example_edit'] . "</ a> - |
$ modules/example/admin/index.html7. Kết nối với template engine (Xtemplate)
$ modules/example/admin/main.php
$ modules/example/index.html
$ modules/example/funcs/main.php
$ modules/example/funcs/index.html
$ modules/example/admin.functions.php
$ modules/example/functions.php
$ modules/example/action.php
$ modules/example/language/vi_admin.php
$ modules/example/language/en_admin.php
Bắt đầu từ phiên bản nukeviet 3.0, hệ thống template được tách biệt hẳn ra với mã php. Hiện tại, hệ thống template của nukeviet đang sử dụng Xtemplate để xử lý cho việc tách biệt mã php và html. Để tìm hiểu thêm về cách viết Xtemplate, các bạn có thể đọc thêm tài liệu về tại địa chỉ: http://sourceforge.net/projects/xtpl/files/XTemplate%20PHP5/
Sơ đồ template admin control panel sử dụng Xtemplate
themesĐể sử dụng Xtemplate cho admin control panel của module Example ta tiến hành các bước như sau:
—-admin_default
css
—-example.css
images
js
modules
—-example.php
tpl
—-example.tpl
Sửa lại file modules/example/admin/main.php
26 | $query = "UPDATE `" . NV_PREFIXLANG . "_" . $module_data . "` SET `title` = " . $db->dbescape( $title ) . " WHERE `id` =" . $id . ""; |
29 | Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "" ); |
template admin phải trùng tên với tên module.
$ modules/example/admin/index.htmlSơ đồ cấu trúc template sử dụng Xtemplate
$ modules/example/admin/main.php
$ modules/example/index.html
$ modules/example/funcs/main.php
$ modules/example/funcs/index.html
$ modules/example/admin.functions.php
$ modules/example/functions.php
$ modules/example/action.php
$ modules/example/language/vi_admin.php
$ modules/example/language/en_admin.php
$ themes/admin_default/modules/example.php
$ themes/admin_default/modules/example.tpl
themesSửa lại file modules/example/funcs/main.php
—-default
css
—-example.css
images
js
modules
—-example.php
tpl
—-example.tpl
Chú ý:Tên của file trong thư mục modules của template phải trùng với tên của module.
mục language của module
Khi đó danh mục các file của module gồm:
$ modules/example/admin/index.htmlCác chú ý khi lập trình
$ modules/example/admin/main.php
$ modules/example/index.html
$ modules/example/funcs/main.php
$ modules/example/funcs/index.html
$ modules/example/admin.functions.php
$ modules/example/functions.php
$ modules/example/theme.php
$ modules/example/action.php
$ modules/example/version.php
$ modules/example/language/vi.php
$ modules/example/language/vi_admin.php
$ modules/example/language/en.php
$ modules/example/language/en_admin.php
$ themes/default/modules/example.php
$ themes/default/modules/example/example.xtpl
$ themes/admin_default/modules/example.php
$ themes/admin_default/modules/example.tpl
1) Encoding
Encoding mặc định tất cả các file là: ansi, các file lang như tiếng việt, pháp, nga .. Encoding cần chuyển sang utf-8
2) Trigger_error
thay vì dùng die(“…”) báo lỗi và dừng chương trình; cần dùng dùng trigger_error(“…”, 256);
để ghi lại lỗi đó và thông báo lỗi.
3) Chế độ thông báo lỗi
Để thay đổi chế độ thông báo lỗi của php cần sửa file includes /constants.php
4) Lấy giá trị của biến khi submit form
class request còn có thể lấy theo các phương thức: get_bool, get_string, get_int, get_float, get_array, Trong phương thức get_string nếu lấy qua phương thức get, giá trị của biến đã được lọc mã html
Lấy biến dụng số nguyên
khi 1 form có textarea, chỉ dùng phương thức post, chứ không dùng phương thức get, nếu không sẽ bị mất dữ liệu
sử dụng filter_text_textarea cho các editor
05 | //Chì chỉ các tags được liệt kê trong NV_ALLOWED_HTML_TAGS mới được sử dụng, các mã khác sẽ bị lọc bỏ |
14 | ?> |
0 nhận xét:
Đăng nhận xét