Как в Java-Script указать зарегистрированного на сайте юзера ?

Всем привет.
Прошу мне помочь указать вместо isUser зарегистрированного на сайте юзера:
<script>
/* Считаем что в переменной isUser — содержится текущий статус пользователя
*/
var userChat = document.getElementById('myWidgetUser'),
   guestChat = document.getElementById('myWidgetGuest');

if (isUser) {
   widget(userChat).start();
   guestChat.parentNode.removeChild(guestChat);
} else {
   setTimeout(function () {
       widget(guestChat).start();
       guestChat.parentNode.removeChild(guestChat);
   }, 30000);
}
</script>
Скрипт у меня оказался готовый, а адаптировать его под модх навыков нет. Также с удовольствием выслушаю более оптимальные варианты.
Спасибо!
brioni
15 января 2019, 00:17
modx.pro
740
0

Комментарии: 9

Alexey Medvedev
15 января 2019, 00:39
+1
Fenom:
<script>
    window.user = {
         id: {$_modx->user.id}
         fullname: {$_modx->user.fullname}
    }
</script>
Smarty:
<script>
    window.user = {
         id: [[+modx.user.id]]
         fullname: [[+modx.user.fullname]]
    }
</script>
Почитайте:
Если пользователь не авторизован, то user.id = 0
    brioni
    15 января 2019, 02:14
    0
    те финальный код должен выглядеть так?
    <script>
        window.user = {
             id: {$_modx->user.id}
             fullname: {$_modx->user.fullname}
        }
    </script>
    
    <script>
    var userChat = document.getElementById('myWidgetUser'),
       guestChat = document.getElementById('myWidgetGuest');
    
    if (user.id = 0) {
       widget(guestChat).start();
       guestChat.parentNode.removeChild(guestChat);
    } else {
       setTimeout(function () {
       widget(userChat).start();
       guestChat.parentNode.removeChild(guestChat);    
       }, 30000);
    }
    </script>
      Alexey Medvedev
      15 января 2019, 08:45
      +1
      Если прям упростить и в JS данные пользователя не нужны, то можно использовать
      {$_modx->isAuthenticated()}
      Получится:
      <script>
      var userChat = document.getElementById('myWidgetUser'),
         guestChat = document.getElementById('myWidgetGuest');
      
      if ({$_modx->isAuthenticated()}) {
         widget(userChat).start();
         guestChat.parentNode.removeChild(guestChat);
      } else {
         setTimeout(function () {
             widget(guestChat).start();
             guestChat.parentNode.removeChild(userChat);    
             }, 30000);
      }
      </script>
        Alexey Medvedev
        15 января 2019, 08:48
        +1
        Если он в таком виде прописан в шаблоне и не подключается файлом, как и в предыдущем способе. То можно c помощью Fenom вывести необходимый блок в script.

        <script>
        var userChat = document.getElementById('myWidgetUser'),
           guestChat = document.getElementById('myWidgetGuest');
           {if $_modx->isAuthenticated()}
                widget(userChat).start();
                guestChat.parentNode.removeChild(guestChat);
           {else}
                setTimeout(function () {
                   widget(guestChat).start();
                   guestChat.parentNode.removeChild(userChat);    
                   }, 30000);
            {/if}
        </script>
          brioni
          15 января 2019, 14:11
          0
          Большое спасибо за помощь.
          а
          {$_modx->isAuthenticated()}
          будет обрабатываться внутри чанка?
            Михаил
            15 января 2019, 14:47
            0
            да
              Павел Гвоздь
              15 января 2019, 14:51
              +1
              Главное про кавычки и запятую не забудь.
              <script>
                  window.user = {
                       id: {$_modx->user.id},
                       fullname: '{$_modx->user.fullname}'
                  }
              </script>
        vectorserver
        18 января 2019, 11:27
        0
        <script>
            let window.user = {
                 id: [[+modx.user.id]],
                 fullname: [[+modx.user.fullname:desault=`anonimus`]],
            }
        </script>
          brioni
          18 января 2019, 11:31
          0
          Благодарю, тк ни один из предложенных выше вариантов так и не запустился. В итоге решил задачу так:
          [[!+modx.user.id:isloggedin:is=`1`:then=`[[$myWidgetUser]]`:else=`[[$myWidgetGuest]] `]]
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          9