Sẽ không khó để tạo mô-đun tùy chỉnh cho việc này.
Các truy vấn mà các module thống kê chạy là:
db_query('UPDATE {node_counter} SET daycount = daycount + 1, totalcount = totalcount + 1, timestamp = %d WHERE nid = %d', time(), arg(1));
// If we affected 0 rows, this is the first time viewing the node.
if (!db_affected_rows()) {
// We must create a new row to store counters for the new node.
db_query('INSERT INTO {node_counter} (nid, daycount, totalcount, timestamp) VALUES (%d, 1, 1, %d)', arg(1), time());
}
Điều duy nhất chúng ta cần làm, là để thay thế arg(1)
với id nút chúng tôi muốn thêm một số để điều này có thể được thực hiện trong một phong tục mô-đun một cái gì đó như thế này.
function custom_module_menu() {
$items['custom/ajax/%node'] = array(
'title' => 'Update count',
'page callback' => 'custom_module_update_counter',
'page arguments' => array(2),
'access callback' => array('custom_module_access_control'),
);
function custom_module_update_counter($node) {
db_query('UPDATE {node_counter} SET daycount = daycount + 1, totalcount = totalcount + 1, timestamp = %d WHERE nid = %d', time(), $node->nid);
// If we affected 0 rows, this is the first time viewing the node.
if (!db_affected_rows()) {
// We must create a new row to store counters for the new node.
db_query('INSERT INTO {node_counter} (nid, daycount, totalcount, timestamp) VALUES (%d, 1, 1, %d)', $node->nid, time());
}
}
Tất cả những gì còn lại là để thực hiện một chức năng điều khiển truy cập tùy chỉnh, bạn có thể kiểm tra nếu yêu cầu là ajax hoặc thực hiện bất kiểm soát mà bạn thích, chức năng chỉ phải trả về TRUE hoặc FALSE. Bạn cũng cần phải thực hiện một sự kiện ajax với id nút trong cài đặt của bạn, nhưng điều đó cũng không quá khó.
Bạn cần nhấn url custom/ajax/2
để cập nhật nút có id 2, v.v.
Thankyou rất nhiều cho câu trả lời chi tiết của bạn. Sẽ bị nứt trên mô-đun tùy chỉnh. – wiifm
Mô-đun của tôi hiện có sẵn để tải xuống trên d.o http://drupal.org/project/statistics_ajax - trong trường hợp bất kỳ ai khác cần chức năng tương tự – wiifm