Pregunta

Actualmente utilizo el módulo de estadísticas (núcleo) en mi Drupal 6 instalar. Esto incrementa una cuenta en el {} node_counter mesa cada vez que el nodo es vista, y esto funciona.

Mi pregunta es - puedo programación incrementar este contador también? Estoy buscando para lograr esto cuando los usuarios interactuar con el contenido creado a partir de puntos de vista (por ejemplo, haga clic en una caja de luz), así que la posibilidad de actualizar la tabla con AJAX sería lo ideal.

He hecho una búsqueda rápida en d.o y no parece haber ningún módulos que sobresalen de inmediato. ¿Alguien tiene alguna experiencia con esto?

¿Fue útil?

Solución

No debería ser difícil hacer un módulo personalizado para esto.

La consulta que se ejecuta el módulo de estadísticas es:

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());
}

Lo único que tenemos que hacer, es reemplazar arg(1) con el identificador de nodo que queremos añadir un recuento a esto se podría hacer en un módulo personalizado algo como esto.

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());
   }
 }

Todo lo que queda es la implementación de una función de control de acceso personalizado, se puede comprobar si la solicitud es ajax o realice cualquier control que desee, la función debe simplemente devolver VERDADERO o FALSO. También es necesario hacer un evento ajax con el identificador de nodo en su entorno, pero eso no debería ser demasiado difícil tampoco.

Es necesario golpear la custom/ajax/2 url para actualizar el nodo con id 2, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top