0

当用户想要打开特定页面时,我创建了一个名为 history 的内容类型,内容历史记录应该插入新行。

我正在使用规则,但坚持查询。

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

4

3 回答 3

0

统计模块不能帮助您吗?“它计算了多少次,以及从哪里查看您的每个帖子”。

于 2010-01-26T16:09:49.913 回答
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)
        }
    }

显然这真的很粗糙,但它会让你开始。

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

于 2010-01-26T17:26:30.933 回答
0

不要为日志创建内容类型的好方法。只需创建带有列的简单表:nid(节点 id),visited(访问日期时间),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);
    }
  }
}

您可以在某处显示此节点的列表。
举个例子。如上所述查看统计模块。

于 2010-01-26T23:43:18.080 回答