我目前在Drupal 6安装上使用统计模块(核心).每次查看节点时,这会增加{node_counter}表中的计数,这是有效的.
我的问题是 – 我可以通过编程方式递增此计数器吗?我希望当用户与从视图创建的内容(例如点击灯箱)进行交互时实现这一点,因此能够使用AJAX更新表格将是理想的选择.
解决方法
为此制作自定义模块应该不难.
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,%d)',arg(1),time()); }
我们唯一需要做的就是用我们想要添加计数的节点id替换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,$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,$node->nid,time()); } }
剩下的就是实现一个自定义访问控制功能,你可以检查请求是ajax还是做你喜欢的控制,函数必须返回TRUE或FALSE.您还需要在设置中使用节点ID创建ajax事件,但这也不应该太难.
你需要点击url custom / ajax / 2来更新id为2的节点.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。