2011-11-22 52 views
2

我正在使用splash module,但我没有得到我想要的结果。我会为用户第一次登录时显示一个lightbox演示文稿。我可能会编写一个自定义模板,将其打印到一个块中,然后根据特定条件动态显示块。如何检测用户是否第一次访问Drupal 6

我和饼干的工作,这里是一些调用我的工作:

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 

     } 
} 
+0

确保此问题的标题正确地反映了您正在谈论的内容(即“首次登录”还是“首次访问”?)。 – Alexander

回答

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;  
    } 
} 
+0

嘿纠正我,如果错了,但不是这个插入的情况下,当用户注册时,即当实际记录进入数据库,但这不会在登录时被调用 – GoodSp33d

+0

是的,我做了上述修正,我需要它工作时,匿名用户首次查看内容(首页)。它与我的身份验证用户很好地工作,但... – inertialmedia

0

默认情况下,我觉得没什么Drupal的API来检测第一次登录,我们需要一个自定义代码,也许是一个新的列属性设置为状态= 1,在hook_user进行登录检查,如果状态= 1,如果状态1然后显示启动页面并使状态为0,以便下次不会出现启动页面。

0

此外,请确保您的自定义模块设置为在启动模块后运行。您可以将模块的system表中的weight值设置为飞溅级别以上,确保在代码检查之前始终设置Cookie。

相关问题