drupal_add_js无法在hook_user_login中工作

时间:2012-11-19 17:01:19

标签: javascript drupal drupal-7

使用Drupal 7我在hook_user_login中使用drupal_add_js添加js。

添加js后我可以调用drupal_get_js(),我可以看到我的js已被添加,但是当页面加载时,js已经消失了。

我的代码是:

function popups_user_login(&$edit, $account) {
    $js = 'some inline js here';
    drupal_add_js($js, array('type'=>'inline', 'weight'=>1));
    drupal_add_js(drupal_get_path('module', 'popups').'/popups.js', array('weight'=>2));
}

模块的目的是在用户登录后创建弹出窗口,如果符合某些条件。

drupal.org上有一个类似的问题just here

谁能告诉我这里发生了什么?

(我在2个独立的Drupal 7安装上尝试了这个,并且在两个站点都遇到了同样的问题)

1 个答案:

答案 0 :(得分:2)

像Clive一样,这是由于登录后直接发生重定向。 这可以通过安装Devel并在Devel设置页面上打开“显示重定向页面”来检查。

解决方法是在hook_user_login中设置一个会话变量(在我的例子中包含我要显示的弹出窗口的nids),然后可以在hook_page_alter中读取并添加必要的JS。