Question

J'utilise actuellement sur mon Drupal 6, le module statistique (noyau) installer. Cette incrémente un compte dans le tableau {} de node_counter chaque fois que le noeud est considéré, et cela fonctionne.

Ma question est - ce que je peux incrémenter ce compteur programme aussi bien? Je cherche à atteindre cet objectif lorsque les utilisateurs interagissent avec le contenu créé à partir de vues (par exemple cliquer sur un lightbox), afin d'être en mesure de mettre à jour la table avec AJAX serait idéal.

Je l'ai fait une recherche rapide sur d.o et il ne semble pas y avoir de modules qui collent tout de suite. Quelqu'un at-il une expérience avec cela?

Était-ce utile?

La solution

Il ne devrait pas être difficile de faire un module personnalisé pour cela.

La requête qui exécute le module statistique est:

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

La seule chose que nous devons faire, est de remplacer arg(1) avec l'identifiant du nœud que nous voulons ajouter un compte à cela pourrait se faire dans un module personnalisé quelque chose comme ça.

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

Tout ce qui reste est de mettre en œuvre une fonction de contrôle d'accès personnalisé, vous pouvez vérifier si la demande est ajax ou de faire tout ce que vous voulez contrôler, la fonction doit simplement retourner VRAI ou FAUX. Vous devez également faire un événement ajax avec l'ID de nœud dans votre configuration, mais cela ne devrait pas être trop difficile non plus.

Vous devez frapper la custom/ajax/2 URL pour mettre à jour le noeud avec l'identifiant 2 etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top