Bài 2: Viết module đơn giản nukeviet

Thành viên quá tích cực
Để viết một module đơn giản việc đầu tiên là tạo thư mục trong thư mục modules/ sau đó tiếp tục tạo các file và thư mục bên trong như sau:
  • admin.functions.php
  • admin.menu.php
  • version.php
  • funcs
  • funcs/main.php
  • admin
  • admin/main.php
  • functions.php
version.php

Code:
<?php
 
/**  * @Project Module Nukeviet 4.x  * @Author Webvang.vn (hoang.nguyen@webvang.vn)  * @copyright 2014 J&A.,JSC. All rights reserved  * @License GNU/GPL version 2 or any later version  * @createdate 08/10/2014 09:47  */
 
if (!defined('NV_ADMIN') or !defined('NV_MAINFILE'))
    die('Stop!!!');
 
$module_version =
array(
    'name' => 'QLHS', // Tieu de module
    'modfuncs' => 'main,viewcat,topic,groups,detail,search,content,tag,rss', // Cac function co block
    'change_alias' => 'topic,groups,content,rss',
    'submenu' => 'content,rss,search',
    'is_sysmod' => 0, // 1:0 => Co phai la module he thong hay khong
    'virtual' => 1, // 1:0 => Co cho phep ao hao module hay khong
    'version' => '4.0.00', // Phien ban cua modle
    'date' => 'Wed, 8 Oct 2014 00:00:00 GMT', // Ngay phat hanh phien ban
    'author' => 'Webvang.vn (hoang.nguyen@webvang.vn)', // Tac gia
    'note' => '', // Ghi chu
    'uploads_dir' =>
array(
        $module_name,
        $module_name . '/source',
        $module_name . '/temp_pic',
        $module_name . '/topics'
    ),
    'files_dir' => array($module_name . '/topics')
);
Trong đó:
  • Name: Tiêu đề của module.
  • Modfuncs: Các funcs được sử dụng
  • is_sysmod: Có phải module hệ thống hay không.
  • Virtual: Cho phép ảo hóa hay không.
  • Version: Phiên bản của module.
  • Date: Ngày xuất bản module.
  • Author: Tác giả module.
  • uploads_dir: Các thư mục tải lên của module.
admin.functions.php

Code:
<?php
 
/**  * @Project Module Nukeviet 4.x  * @Author Webvang.vn (hoang.nguyen@webvang.vn)  * @copyright 2014 J&A.,JSC. All rights reserved  * @License GNU/GPL version 2 or any later version  * @createdate 08/10/2014 09:47  */
 
if (!defined('NV_ADMIN') or !defined('NV_MAINFILE') or !defined('NV_IS_MODADMIN'))
    die('Stop!!!');
 
define('NV_IS_QLHS_ADMIN', true);
Trong đó cần chú ý đến : define('NV_IS_QLHS_ADMIN', true) : Khai báo biến hằng xác nhận file func của module trong admin.
admin.menu.php

Code:
<?php
 
/**  * @Project Module Nukeviet 4.x  * @Author Webvang.vn (hoang.nguyen@webvang.vn)  * @copyright 2014 J&A.,JSC. All rights reserved  * @License GNU/GPL version 2 or any later version  * @createdate 08/10/2014 09:47  */
 
if (!defined('NV_ADMIN'))
    die('Stop!!!');
 
$submenu['tags'] = $lang_module['tags'];
$submenu['groups'] = $lang_module['block'];
$submenu['topics'] = $lang_module['topics'];
$submenu['sources'] = $lang_module['sources'];
$submenu['setting'] = $lang_module['setting'];
$allow_func[] = 'topicsnews';
$allow_func[] = 'topics';
$allow_func[] = 'topicdelnews';
$allow_func[] = 'addtotopics';
$allow_func[] = 'change_topic';
$allow_func[] = 'list_topic';
$allow_func[] = 'del_topic';
$allow_func[] = 'sources';
$allow_func[] = 'change_source';
$allow_func[] = 'list_source';
$allow_func[] = 'del_source';
$allow_func[] = 'block';
$allow_func[] = 'groups';
$allow_func[] = 'del_block_cat';
$allow_func[] = 'list_block_cat';
$allow_func[] = 'chang_block_cat';
$allow_func[] = 'change_block';
$allow_func[] = 'list_block';
$allow_func[] = 'tags';
$allow_func[] = 'setting';
$allow_func[] = 'tools';
$submenu : là danh sách các menu con của module
$allow_func : xác nhận các file func của module được phép hoạt động
functions.php

Code:
<?php
 
/**  * @Project Module Nukeviet 4.x  * @Author Webvang.vn (hoang.nguyen@webvang.vn)  * @copyright 2014 J&A.,JSC. All rights reserved  * @License GNU/GPL version 2 or any later version  * @createdate 08/10/2014 09:47  */
 
if (!defined('NV_SYSTEM'))
    die('Stop!!!');
 
define('NV_IS_MOD_QLHS', true);
File này thường chứa các hàm sử dụng bên ngoài site, nếu module không có dùng các hàm, có thể để trống file này (như trên), tuy nhiên không được xóa nó.
Thư mục language chứa các file ngôn ngữ. Các file ngôn ngữ trong admin có dạng admin_ngon-ngu.php, các file ngôn ngữ ngoài site có dạng ngon-ngu.php.
Cấu trúc cơ bản của file ngôn ngữ:

admin_ngon-ngu.php

Code:
<?php
 
/**  * @Project Module Nukeviet 4.x  * @Author Webvang.vn (hoang.nguyen@webvang.vn)  * @copyright 2014 J&A.,JSC. All rights reserved  * @License GNU/GPL version 2 or any later version  * @createdate 08/10/2014 09:47  */
  
if (!defined('NV_ADMIN') or !defined('NV_MAINFILE'))
    die('Stop!!!');
 
$lang_translator['author'] = 'webvang.vn (hoang.nguyen@webvang.vn)';
$lang_translator['createdate'] = '08/10/2014, 15:22';
$lang_translator['copyright'] = '@Copyright (C) 2014 J&A.,JSC. All rights reserved';
$lang_translator['info'] = '';
$lang_translator['langtype'] = 'lang_module';
 
$lang_module['main'] = 'Quản lý học sinh;
ngon-ngu.php
Code:
<?php
 
/**  * @Project Module Nukeviet 4.x  * @Author Webvang.vn (hoang.nguyen@webvang.vn)  * @copyright 2014 J&A.,JSC. All rights reserved  * @License GNU/GPL version 2 or any later version  * @createdate 08/10/2014 09:47  */
  
if (!defined('NV_MAINFILE'))
    die('Stop!!!');
 
$lang_translator['author'] = 'J&A.,JSC (hoang.nguyen@webvang.vn)';
$lang_translator['createdate'] = '08/10/2014, 15:22';
$lang_translator['copyright'] = '@Copyright (C) 2010 J&A.,JSC. All rights reserved';
$lang_translator['info'] = '';
$lang_translator['langtype'] = 'lang_module';
 
$lang_module['nocatpage'] = 'Error:No topic';
Biến $lang_module là biến lưu ngôn ngữ của module.
Thư mục js gồm hai file user.js và admin.js. File user.js chứa các câu lệnh javascript (nếu có) ngoài site, admin.js chứa javascript (nếu có) trong admin.
main.php

Lưu ý: Để xuất nội dung của module và kết thúc ta thực hiện thao tác:
  • Đối với admin:
include (NV_ROOTDIR . "/includes/header.php");
echo nv_admin_theme($contents);
include (NV_ROOTDIR . "/includes/footer.php");
biến $contents là toàn bộ nội dung hiển thị của module.
  • Đối với khu vực site:
include (NV_ROOTDIR . "/includes/header.php");
echo nv_site_theme($contents);
include (NV_ROOTDIR . "/includes/footer.php");
biến $contents là toàn bộ nội dung hiển thị của module.
 
Thành viên mới
sao mình làm theo từ đầu tới cuối mà kiểm tra trong khu vực Admin thì lại không thấy gì hết cả vậy bạn ? Mình dùng Nuke version 4.1.02
 
Thích: vn5chau.com
--= Roll With The Wind =--
Quản trị viên
Nếu như chưa hiện ra thì thường là làm sai :p
 
Thích: vn5chau.com
Thành viên năng động
(ý tưởng) nếu Nukeviet có thêm phiên bản (Drag and drop, option, adjust ... ) tích hợp thành một bộ cài đặt hay chạy ngay không cần cài trên nền web ... thế có phải nhanh cho ra đời nhiều các Coder thế hệ Nukeviet.+++
 
Thành viên mới
Hehe, mình làm ra rồi, phải vào Quản lý module để kích hoạt, hôm qua ko kích hoạt hèn chi không thấy mặt nó
 
Thích: anhyeuviolet
--= Roll With The Wind =--
Quản trị viên
(ý tưởng) nếu Nukeviet có thêm phiên bản (Drag and drop, option, adjust ... ) tích hợp thành một bộ cài đặt hay chạy ngay không cần cài trên nền web ... thế có phải nhanh cho ra đời nhiều các Coder thế hệ Nukeviet.+++
Bác đưa lên git xem.
Cái này không khó, nhưng mà dễ "ăn hành" khi lỡ tay sửa sai trong code lắm :p