我正在使用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
}
}
答案 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。