微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax – 在drupal中以编程方式更新{node_counter}表

我目前在Drupal 6安装上使用统计模块(核心).每次查看节点时,这会增加{node_counter}表中的计数,这是有效的.

我的问题是 – 我可以通过编程方式递增此计数器吗?我希望当用户与从视图创建的内容(例如点击灯箱)进行交互时实现这一点,因此能够使用AJAX更新表格将是理想的选择.

我已经对d.o进行了快速搜索,似乎没有任何模块可以直接显示出来.有人对这个有经验么?

解决方法

为此制作自定义模块应该不难.

统计模块运行的查询是:

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 举报,一经查实,本站将立刻删除。

相关推荐