Giải thích các biến $module_name, $module_data, $module_file
$module_name
là tên module. Tên module hiểu là "khóa" của module, khác với tiêu đề, tên gọi module. Tên module quy định gồm chữ cái thường từ a-z, số và dấu gạch ngang (-)$module_data
là tiếp đầu tố của bảng dữ liệu của module,$module_data
được xác định trên cơ sở chuyển dấu gạch ngang thành dấu gạch dưới của$module_name
(nguyên nhân trong MySQL tên bảng không được chứa ký tự gạch ngang)$module_file
là tên thư mục chứa các file code php của module. Ví dụ ta có thư mục của module là modules/seek thì giá trị$module_file
là seek.$module_upload
là tên thư mục upload và assets của module. Nếu không có trường hợp đặc biệt thì$module_upload
lấy giá trị$module_name
Nguyên nhân vì sao phân biệt nhiều biến như thế?
Trong NukeViet có chức năng ảo hóa module, tức là một module gốc có thể sinh ra vô số module ảo với tên gọi khác nhưng chức năng hoàn toàn giống nhau. Do đó, cần phải sinh ra nhiều biến để thực hiện chức năng đó. Ví dụ:
Ta có module gốc là news như vậy nếu không có sự ảo hóa module thì $module_name = $module_data = $module_file = $module_upload = news
Tuy nhiên nếu ta tạo module ảo là tin-tuc thì các biến này sẽ thay đổi giá trị khác nhau, lúc bấy giờ giá trị của chúng sẽ như sau:
- $module_name = tin-tuc
- $module_data = tin_tuc
- $module_file = news
- $module_upload = tin-tuc
Giá trị $module_name thường giống với $module_upload tuy nhiên hai biến này phải được hiểu và sử dụng độc lập. Ví dụ khi nhà phát triển muốn hai module khác nhau nhưng dùng chung thư mục upload thì chỉ cần vào CSDL và thay đổi giá trị module_upload giống nhau.
Cách sử dụng các biến này cho chuẩn xác
$module_name
Được sử dụng trong việc tạo ra liên kết, ví dụ
$base_url = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name;
$module_data
Được dùng khi truy cập CSDL ví dụ
$sql = 'SELECT * FROM ' . NV_PREFIXLANG . '_' . $module_data . '_cat WHERE status IN(' . implode(',', $global_code_defined['cat_visible_status']) . ') ORDER BY sort ASC';
$list = $nv_Cache->db($sql, 'catid', $module_name);
Hoặc tạo ra một khóa cookie, session, tokend.... ví dụ
$time_set = $nv_Request->get_int($module_data . '_' . $op . '_' . $id, 'session');
$nv_Request->set_Cookie($module_data . '_clickid_' . $id, 3600, NV_LIVE_COOKIE_TIME);
$module_file
Thường dùng trong các trường hợp như gọi file của module ra (include, require)
require_once NV_ROOTDIR . '/modules/' . $module_file . '/global.functions.php';
Xác định đường dẫn đến file js, css, tpl...
if (file_exists(NV_ROOTDIR . '/themes/' . $module_info['template'] . '/css/' . $module_file . '.css')) {
$my_head = "<link rel=\"StyleSheet\" href=\"" . NV_BASE_SITEURL . "themes/" . $module_info['template'] . "/css/" . $module_file . ".css\" type=\"text/css\" />\n";
}
$module_upload
Dùng khi thao tác với ảnh, tập tin upload khác của module. Ví dụ
$photo = SYSTEM_UPLOADS_DIR . '/' . $module_upload . '/' . $new_photo_name;
$new_photo_path = NV_ROOTDIR . '/' . SYSTEM_UPLOADS_DIR . '/' . $module_upload . '/';
if (nv_is_file($image, NV_UPLOADS_DIR . '/' . $module_upload)) {
$row['image'] = substr($image, strlen(NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/'));
} else {
$row['image'] = '';
}