2012-04-16 73 views
6

我知道如何检查用户是否通过PHP登录,但是当事件发生时我需要做一些样式,并且为此创建了一个单独的JavaScript文件。这是一个Drupal变量还是我可以参考的东西?如何检查用户是否通过JavaScript在Drupal站点中登录?

+1

你在做JavaScript样式?基于用户身份验证,非常小心您在JavaScript中执行的操作。任何人都可以轻松操纵页面上的JS。 – Webnet 2012-10-01 13:34:46

回答

13

创建一个new custom modulehook_init实现。

function [YOUR_MODULE]_init() 
{ 
    global $user; 
    drupal_add_js(array('user_js_uid' => $user->uid), 'setting'); 
} 

然后,在JavaScript代码,检查模块user_js_uid中定义的变量的值。

​​

希望这有助于...穆罕默德

+1

'jQuery.cookie(“DRUPAL_UID”);'总是返回null' – FLY 2012-05-21 12:35:27

+2

7.12 – jhoff 2013-05-09 19:31:57

+0

+1中没有“DRUPAL_UID”cookie。我为这种情况添加了一个修复程序。谢谢。 – 2013-05-13 06:48:12

11

如果你正在等待DOM做好准备和使用标准产生的Drupal CSS类,你可以这样做(用jQuery):

if($("body.not-logged-in").length) 
{ 
    // user is not logged in 
} 
+1

这样你不必添加一个库来检查.. – Haje 2013-05-30 06:42:49

+0

这是一个很好的解决方案,如果你不使用清漆或类似的 – Bery 2014-08-07 07:48:05

+0

就不需要编写自定义模块。这种方法不需要编写PHP,只需要纯JavaScript。 – Sunry 2016-07-02 03:17:37

1

“未登录”类似乎不存在于香草Drupal 8中。 但是有“用户登录”。下面是我使用隐藏定制的“注册”菜单项的CSS的一条线,如果用户登录:

body.user-logged-in a[href="/user/register"] {display: none; } 
1

为Drupal 8,如果你使用Drupal.behaviors,您可以访问设置的用户UID :

(function($, Drupal, viewport, settings) { 
    "use strict"; 
    Drupal.behaviors.ifCE = { //the name of our behavior 
    attach: function (context, settings) { 
    var userUID = settings.user.uid; 
    //your code... 
    } 
})(jQuery, Drupal, ResponsiveBootstrapToolkit, drupalSettings); 

所以如果userUID === 0那么你的用户没有连接。

相关问题