drupal

2010-03-20 12 views
6

'te programatik olarak {node_counter} tablosunu güncelleyin Drupal 6 kurulumumda şu anda istatistik modülünü (çekirdek) kullanıyorum. Bu, düğümü her görüntülendiğinde {node_counter} tablosunda bir sayı artırır ve bu çalışır.drupal

Sorum şu: Bu sayacı programlı olarak artırabilir miyim? Kullanıcılar, görüntülerden oluşturulan içerikle etkileşime girdiklerinde (bir ışık kutusunu tıklatarak), AJAX ile tabloyu güncelleyebilmeleri için ideal olacağına inanıyorum.

d.o ile ilgili hızlı bir arama yaptım ve hemen dışarıda kalan herhangi bir modül görünmüyor. Bu konuda herhangi bir deneyimi var mı?

cevap

9

Bunun için özel bir modül yapmak zor olmamalı. istatistik modülü çalışır

sorgusu:

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

Yapmamız gereken tek şey, bu özel bir Gönderen yapılabilir biz sayımını eklemek istediğiniz düğüm kimliği ile arg(1) değiştirmektir buna benzer bir şey. Bütün bu geriye

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

özel erişim kontrol işlevi uygulamak için, sen istek ajax olup olmadığını kontrol edebilir veya ne gibi kontrol yapabilir, fonksiyon sadece DOĞRU veya YANLIŞ dönmelidir. Ayrıca ayarınızda düğüm kimliği ile bir ajax olayı yapmanız gerekir, ancak bu da çok zor olmamalıdır.

Sen detaylı cevap için çok id 2 vs.

+0

Teşekkür ile düğüm güncelleştirmek için url custom/ajax/2 vurmak gerekir. Özel modülde çatlama olacak. – wiifm

+0

Modülüm artık d.o http://drupal.org/project/statistics_ajax adresinden indirilebilir. – wiifm