加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 23:13:59 所属栏目:百科 来源:网络整理
导读:我目前在Drupal 6安装上使用统计模块(核心).每次查看节点时,这会增加{node_counter}表中的计数,这是有效的. 我的问题是 – 我可以通过编程方式递增此计数器吗?我希望当用户与从视图创建的内容(例如点击灯箱)进行交互时实现这一点,因此能够使用AJAX更新表格
我目前在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的节点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读