如何通过 JavaScript 检查用户是否已登录 Drupal 站点?

问题描述 投票:0回答:5

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

javascript php drupal drupal-7 drupal-modules
5个回答
15
投票

使用 hook_init 实现创建新的自定义模块

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

然后在您的 javascript 代码中,检查模块中定义的变量的值

user_js_uid

if(Drupal.settings.user_js_uid == 0)
{
    // execute code for non logged in users
}
else
{
    // execute code for logged in users
}

14
投票

如果您正在等待 DOM 准备就绪并使用标准生成的 Drupal CSS 类,您可以执行类似的操作(使用 jQuery):

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

6
投票

对于 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
则您的用户未连接。


2
投票

“未登录”类在普通 Drupal 8 中似乎不存在。 但有“用户登录”代替。这是我用来在用户登录时隐藏自定义“注册”菜单项的一行 CSS:

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

0
投票

我检查了元素 #toolbar-administration 自 Drupal 10 以来是否存在。

let isLoggedIn = jQuery("#toolbar-administration").length === 1;
© www.soinside.com 2019 - 2024. All rights reserved.