2010-01-26 44 views
0

当用户想要打开特定页面时,应创建一个名为history 的内容历史记录,并在新行中插入内容历史记录。drupal 6:如何编写查询插入到内容类型中

我正在使用规则,但与查询stucked。

我已经写了一个简单的查询来插入它甚至可以工作的数据,但是当我在视图中获取数据时它并没有显示出来。

回答

0

不要为日志创建内容类型。只要创建简单的表列: NID(节点ID),访问(访问日期时间),UID(用户ID,为客人= 0)

在你的模块添加此:


/** 
* Implementation of hook_exit(). 
*/ 
function YOURMODULENAME_exit() { 
    drupal_bootstrap(DRUPAL_BOOTSTRAP_PATH); 

    if ((arg(0) == 'node') && is_numeric(arg(1)) && (!arg(2))) { 
    global $user; 
    $node = node_load(arg(1)); 
    if (in_array($node->type, array('some_content_types'))) { 
     db_query('INSERT INTO {somelogtable} VALUES(%d, %d, %d)', $node->nid, time(), $user->uid); 
    } 
    } 
} 

而且您可以在某处显示此节点的列表。
更多示例。看看上面的统计模块。

+0

我已经这样做了,但是当我创建一个节点不会出现在视图中可能是我必须使用node_save CCK filds这是有点棘手... – rakeshakurathi 2010-01-27 12:31:58

+0

您应该添加在你的模块“views.api”支持。请阅读http://views-help.doc.logrus.com/help/views/api-tables – Nikit 2010-01-28 00:30:53

0

嗯,对于您的观看历史记录使用内容类型看起来有点奇怪,但我会随它去。所以你想要历史记录创建一个新的节点,无论何时查看某个页面,对吧?你将不得不为此使用自定义模块。

你可以写一个实现hook_init()做类似的模块:

<?php 
    MODULENAME_init() { 
     if (drupal_get_path_alias($_GET['q']) == 'the_path_alias_of_your_page') { 
      // create your node here, see http://api.drupal.org/api/function/node_submit/6 for example 
      // then save it using node_save($node) 
     } 
    } 

显然,这真的很粗糙,但它会帮助您开始。

你确定你不能只使用谷歌分析或类似的?