Công cụ thành viên

Công cụ trang web


programming4:module:comment

Đây là một phiên bản cũ của tài liệu!


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ông
  • allowed_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ận
  • setcomm 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ận
  • sortcomm 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ận
  • perpagecomm 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$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$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.

programming4/module/comment.1519787269.txt.gz · Sửa đổi lần cuối: 2018/02/28 10:07 bởi hoaquynhtim99