Для этого не должно быть сложно создать специальный модуль.
Запрос, который выполняет модуль статистики:
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());
}
Единственное, что нам нужно сделать, это заменить arg(1)
идентификатором узла, к которому мы хотим добавить счетчик, это можно сделать в пользовательском модуле, например, так.
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());
}
}
Осталось только реализовать пользовательскую функцию контроля доступа, вы можете проверить, является ли запрос ajax, или сделать любой другой элемент управления, который вам нравится, функция должна просто вернуть TRUE или FALSE. Вам также необходимо создать событие ajax с идентификатором узла в вашей настройке, но это также не должно быть слишком сложным.
Вам нужно нажать на ссылку custom/ajax/2
, чтобы обновить узел с идентификатором 2 и т. Д.