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

时间:2012-04-16 22:35:24

标签: javascript drupal drupal-7 drupal-modules

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

4 个答案:

答案 0 :(得分:13)

使用new custom module实施创建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
}

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

答案 1 :(得分:12)

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

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

答案 2 :(得分:2)

对于Drupal 8,如果您使用Drupal.behaviors,则可以在设置中访问用户UID:

            $('#leadtable').dataTable({
              language: {
                url: '//cdn.datatables.net/plug-ins/1.10.12/i18n/Hebrew.json'
              },

              columnDefs: [{
                  type: 'de_datetime',
                  targets: 0
                }

              ]
            });

因此,如果(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); 您的用户未连接。

答案 3 :(得分:1)

香草Drupal 8中似乎不存在“未登录”类。 但是有“用户登录”而不是。这是我用来隐藏自定义“注册”菜单项的一行CSS,如果用户已登录:

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