如何检测是否是用户第一次访问Drupal 6

时间:2011-11-22 13:32:25

标签: php drupal cookies drupal-6

我正在使用splash module,但我没有得到我想要的结果。我将在用户首次登录时显示一个灯箱演示文稿。我可能会编写一个打印到块的自定义模板,然后根据特定条件动态显示该块。

我正在使用cookies,这是我正在使用的一些电话:

 if (!$cookie_data['time']) {
      print $block;
 } else { }

非常基本,但我只是想写一个检查是否是用户第一次访问的条件。

  

*更新:好的。这是我的错误,我需要它只能为匿名用户做这件事。我的错。这是我正在使用的代码,但它不能正常工作......

 function custommodule_init() {

      setcookie('splash_status',$splash_status,time()+3600*24*365);

      if (!isset($_COOKIE['splash_status'])) $_COOKIE['splash_status'] = 0;

      $splash_status = $_COOKIE['splash_status'] + 1;

      if ($splash_status > 1) {
              drupal_add_js(drupal_get_path('module', 'sbasplash') . '/sbasplash.js');
              drupal_add_css(drupal_get_path('module', 'sbasplash') . '/sbasplash.css');

              // Action to enable block

      } else {

              // Action to disable block

      }
 }

3 个答案:

答案 0 :(得分:1)

创建自定义模块,实现“hook_user”并在“插入”操作中插入代码。当用户第一次插入数据库时​​,您的代码将被执行。您可以使用它来添加块或设置会话变量,并根据其值显示块。

yourcustommodule_user($op, &$edit, &$account, $category = NULL) {
  switch($op){
    case 'insert':
       //your code here
       //example: $_SESSION['show_block'] = 1; and then unset after block is shown
    break;     
  }
}

答案 1 :(得分:0)

默认情况下我认为没有drupal api来检测首次登录,我们需要一个自定义代码,可能是一个新的列属性设置为status = 1,在hook_user中用于登录检查if status = 1如果status为1则显示splash页面并使状态为0,以便下次没有启动页面。

答案 2 :(得分:0)

此外,请确保将自定义模块设置为在启动模块之后运行。您可以将模块的weight表中的system值设置为高于splash的值,确保在代码检查之前始终设置cookie。