Đây là một phiên bản cũ của tài liệu!
Mục lục
Hướng tích hợp chức năng bình luận của hệ thống vào module
Khai báo CSDL
Để hệ thống nhận dạng module có sử dụng comment, cần khai báo trong bảng config của hệ thống bằng cách thêm vào file action như sau
// Comments $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'auto_postcomm', '1')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'allowed_comm', '-1')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'view_comm', '6')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'setcomm', '4')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'activecomm', '1')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'emailcomm', '0')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'adminscomm', '')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'sortcomm', '0')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'captcha', '1')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'perpagecomm', '5')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'timeoutcomm', '360')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'allowattachcomm', '0')"; $sql_create_module[] = "INSERT INTO " . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'alloweditorcomm', '0')";
Trong đó:
auto_postcomm
có tự động duyệt bình luận hay khôngallowed_comm
ai được quyền bình luận, nếu đặt -1 tức lấy theo cấu hình đối tượng bình luận.view_comm
ai được xem bình luậnsetcomm
quyền bình luận mặc định khi tạo bài viết (đối tượng) mới.adminscomm
id các admin quản lý bình luậnsortcomm
sắp xếp bình luận: 0 ⇒ Mới trước 1 ⇒ Cũ trước 2 ⇒ Like nhiều trước.captcha
kích hoạt mã xác nhận để bình luậnperpagecomm
số bình luận trên một trang.timeoutcomm
thời gian chờ (giây) giữa hai lần bình luận áp dụng đối với thành viên và khách.allowattachcomm
cho phép đính kèm file vào bình luận.alloweditorcomm
cho phép trình soạn thảo ở bình luận.
Các cấu hình trên module không cần viết phần quản lý riêng mà do module comment của hệ thống xử lý.
Lập trình load form comment và các comment cho bài viết (đối tượng)
Sử dụng đoạn code như sau:
// Kiểm tra module có sử dụng chức năng comment và module comment được kích hoạt if (isset($site_mods['comment']) and isset($module_config[$module_name]['activecomm'])) { $id = $news_contents['id']; // Chỉ ra ID của đối tượng được bình luận $area = $module_info['funcs'][$op]['func_id']; // Chỉ ra phạm vi (loại, vị trí...) của đối tượng bình luận // Kiểm tra quyền bình luận $allowed = $module_config[$module_name]['allowed_comm']; if ($allowed == '-1') { // Quyền bình luận theo đối tượng $allowed = $news_contents['allowed_comm']; } require_once NV_ROOTDIR . '/modules/comment/comment.php'; $checkss = md5($module_name . '-' . $area . '-' . $id . '-' . $allowed . '-' . NV_CACHE_PREFIX); $content_comment = nv_comment_module($module_name, $checkss, $area, $id, $allowed, 1); } else { $content_comment = ''; }
Giải thích cách viết trên:
Biến $id
và $area
tạo thành một cặp khóa unique để xác định ra bài viết được bình luận, trong trường hợp module có bình luận cho nhiều đối tượng có cùng id thì chúng sẽ khác nhau ở $area.
Đoạn code trên sửa dụng ID function của module để làm $area, bạn cũng có thể thay bằng giá trị bất kỳ miễn sao cặp $id
và $area
không trùng lại ở bất cứ bài viết nào.
Thay giá trị $news_contents['allowed_comm']
bằng quyền bình luận riêng đối với bài viết của bạn.
Chú ý giá trị đưa vào $allowed là id hoặc list id của nhóm thành viên được phép bình luận ví dụ 1 hoặc 1,6,7,10
Cuối cùng $content_comment
là biến chứa dữ liệu sẽ xuất ra trình duyệt.