我知道如何检查用户是否通过PHP登录,但是当事件发生时我需要做一些样式设置,我为此创建了一个单独的JavaScript文件。这是一个Drupal变量还是我也可以引用的东西?
创建一个具有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
}
如果你正在等待 DOM 准备就绪并使用标准生成的 Drupal CSS 类,你可以做类似的事情(使用 jQuery):
if( $( "body.not-logged-in" ).length )
{
// user is not logged in
}
对于 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
,则您的用户未连接。
"未登录"类似乎在原版Drupal 8中不存在。但是有"用户登录"代替。以下是我用来在用户登录时隐藏自定义"注册"菜单项的一行 CSS:
body.user-logged-in a[href="/user/register"] {display: none; }
我检查了自Drupal 10以来是否存在 #toolbar 管理的元素。
let isLoggedIn = jQuery("#toolbar-administration").length === 1;