Как в Java-Script указать зарегистрированного на сайте юзера ?
Всем привет.
Прошу мне помочь указать вместо isUser зарегистрированного на сайте юзера:
Спасибо!
Прошу мне помочь указать вместо 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>
Скрипт у меня оказался готовый, а адаптировать его под модх навыков нет. Также с удовольствием выслушаю более оптимальные варианты.Спасибо!
Комментарии: 9
Fenom:
Если пользователь не авторизован, то user.id = 0
<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
те финальный код должен выглядеть так?
<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>
Если прям упростить и в 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>
Если он в таком виде прописан в шаблоне и не подключается файлом, как и в предыдущем способе. То можно 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>
Большое спасибо за помощь.
а
а
{$_modx->isAuthenticated()}
будет обрабатываться внутри чанка?
да
Главное про кавычки и запятую не забудь.
<script>
window.user = {
id: {$_modx->user.id},
fullname: '{$_modx->user.fullname}'
}
</script>
<script>
let window.user = {
id: [[+modx.user.id]],
fullname: [[+modx.user.fullname:desault=`anonimus`]],
}
</script>
Благодарю, тк ни один из предложенных выше вариантов так и не запустился. В итоге решил задачу так:
[[!+modx.user.id:isloggedin:is=`1`:then=`[[$myWidgetUser]]`:else=`[[$myWidgetGuest]] `]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.