XF 2.1 Как передать данные пользователя в переменную JS?

Статус
В этой теме нельзя размещать новые ответы.
Версия XenForo
2.1.9

Myskat

Проверенные
Сообщения
9
Реакции
1
Баллы
30
Здравствуйте! Мне надо зарядить переменную JS кода данными текущего пользователя на странице. Например var nik = {$xf.visitor.username};.
Есть тестовый код. Помещаю его в HTML-код шаблона, при создании отдельной страницы.
HTML:
<html>
    <head>
    </head>
    
    <body>
        <div id="summ_id"></div>
    </body>
</html>

<script>
    var nik = {$xf.visitor.username};
    var summ = 3+4;
    if(nik == 'Myskat')
    {
        document.getElementById('summ_id').innerHTML=summ;
    }
    else
    {
        document.getElementById('summ_id').innerHTML='Не работает(';
    }
</script>
По идее должно выводиться значение НикНэйма в блок <div id="summ_id">, но вместо этого вылезает ошибка index.php?pages/newpage/:1082 Uncaught ReferenceError: Myskat is not defined
2020-12-28_03-21-05.jpg
Предварительное объявление переменной var nik = null; , и явное применение {$xf.visitor.username}, ничего не меняет.

Подскажите, как сделать, чтобы можно было получать значения в переменные JS, и свободно с ними работать?
 
{{ $xf.visitor.username|escape('js') }}. И почему вы значение не вставляете в кавычки, это тоже отдельный вопрос.
var nik = {$xf.visitor.username} после компиляции шаблона будет var nik = Matew, как думаете, можно ли так писать и скушает ли это интепретатор JS? Заодно разберитесь с разницей между одинарными и двойными кавычками.
 
{{ $xf.visitor.username|escape('js') }}. И почему вы значение не вставляете в кавычки, это тоже отдельный вопрос.
var nik = {$xf.visitor.username} после компиляции шаблона будет var nik = Matew, как думаете, можно ли так писать и скушает ли это интепретатор JS? Заодно разберитесь с разницей между одинарными и двойными кавычками.
Спасибо, получилось!
Только начал разбираться с XF. Можете дать ссылку на материал, где подробней про {{ $xf.visitor.username|escape('js') }} и тп. написано? Документацию смотрел, но пока ещё тёмный лес...
Про кавычки , думаю сам легко найду)
 
Последнее редактирование:
Вряд-ли такое вообще существует. Это просто объект(переменная) с фильтром
Понял. Я {$xf.visitor.username} выдрал из шаблона, там было без фильтра.
По какому принципу они конструируются, где можно эти объекты+фильтры смотреть, кроме шаблонов?
 
Последнее редактирование:
Myskat, src/XF/Template/Templater.php
Описания в документации очень мало, но просмотрев код можно понять, какой фильтр и какая функция что делает.
PHP:
protected $defaultFilters = [
        'default'          => 'filterDefault',
        'censor'           => 'filterCensor',
        'count'            => 'filterCount',
        'currency'         => 'filterCurrency',
        'emoji'            => 'filterEmoji',
        'escape'           => 'filterEscape',
        'for_attr'         => 'filterForAttr',
        'file_size'        => 'filterFileSize',
        'first'            => 'filterFirst',
        'format'           => 'filterFormat',
        'hex'              => 'filterHex',
        'host'             => 'filterHost',
        'htmlspecialchars' => 'filterHtmlspecialchars',
        'ip'               => 'filterIp',
        'join'             => 'filterJoin',
        'json'             => 'filterJson',
        'last'             => 'filterLast',
        'nl2br'            => 'filterNl2Br',
        'nl2nl'            => 'filterNl2Nl',
        'number'           => 'filterNumber',
        'number_short'     => 'filterNumberShort',
        'numeric_keys_only' => 'filterNumericKeysOnly',
        'pad'              => 'filterPad',
        'parens'           => 'filterParens',
        'pluck'            => 'filterPluck',
        'preescaped'       => 'filterPreEscaped',
        'raw'              => 'filterRaw',
        'replace'          => 'filterReplace',
        'split'            => 'filterSplit',
        'split_long'       => 'filterSplitLong',
        'strip_tags'       => 'filterStripTags',
        'to_lower'         => 'filterToLower',
        'to_upper'         => 'filterToUpper',
        'de_camel'         => 'filterDeCamel',
        'substr'           => 'filterSubstr',
        'url'              => 'filterUrl',
        'urlencode'        => 'filterUrlencode',
        'zerofill'         => 'filterZeroFill',
    ];

    protected $defaultFunctions = [
        'anchor_target'         => 'fnAnchorTarget',
        'array_keys'            => 'fnArrayKeys',
        'array_merge'           => 'fnArrayMerge',
        'array_values'          => 'fnArrayValues',
        'asset'                 => 'fnAsset',
        'attributes'            => 'fnAttributes',
        'avatar'                => 'fnAvatar',
        'base_url'              => 'fnBaseUrl',
        'bb_code'               => 'fnBbCode',
        'bb_code_snippet'       => 'fnBbCodeSnippet',
        'bb_code_type'          => 'fnBbCodeType',
        'bb_code_type_snippet'  => 'fnBbCodeTypeSnippet',
        'button_icon'           => 'fnButtonIcon',
        'cache_key'             => 'fnCacheKey',
        'call_macro'            => 'fnCallMacro',
        'callable'              => 'fnCallable',
        'captcha'               => 'fnCaptcha',
        'ceil'                  => 'fnCeil',
        'contains'              => 'fnContains',
        'copyright'             => 'fnCopyright',
        'core_js'               => 'fnCoreJs',
        'count'                 => 'fnCount',
        'csrf_input'            => 'fnCsrfInput',
        'csrf_token'            => 'fnCsrfToken',
        'css_url'               => 'fnCssUrl',
        'date'                  => 'fnDate',
        'date_from_format'      => 'fnDateFromFormat',
        'date_dynamic'          => 'fnDateDynamic',
        'date_time'             => 'fnDateTime',
        'debug_url'             => 'fnDebugUrl',
        'display_totals'        => 'fnDisplayTotals',
        'dump'                  => 'fnDump',
        'dump_simple'           => 'fnDumpSimple',
        'duration'              => 'fnDuration',
        'empty'                 => 'fnEmpty',
        'fa_weight'             => 'fnFaWeight',
        'file_size'             => 'fnFileSize',
        'floor'                 => 'fnFloor',
        'gravatar_url'          => 'fnGravatarUrl',
        'highlight'             => 'fnHighlight',
        'in_array'              => 'fnInArray',
        'is_array'              => 'fnIsArray',
        'is_scalar'             => 'fnIsScalar',
        'is_addon_active'       => 'fnIsAddonActive',
        'is_editor_capable'     => 'fnIsEditorCapable',
        'is_toggled'            => 'fnIsToggled',
        'js_url'                => 'fnJsUrl',
        'key_exists'            => 'fnKeyExists',
        'last_pages'            => 'fnLastPages',
        'likes'                 => 'fnLikes',
        'likes_content'         => 'fnLikesContent',
        'link'                  => 'fnLink',
        'link_type'             => 'fnLinkType',
        'min'                   => 'fnMin',
        'max'                   => 'fnMax',
        'max_length'            => 'fnMaxLength',
        'media_sites'           => 'fnMediaSites',
        'mustache'              => 'fnMustache',
        'number'                => 'fnNumber',
        'number_short'          => 'fnNumberShort',
        'named_colors'          => 'fnNamedColors',
        'page_description'      => 'fnPageDescription',
        'page_h1'               => 'fnPageH1',
        'page_nav'              => 'fnPageNav',
        'page_param'            => 'fnPageParam',
        'page_title'            => 'fnPageTitle',
        'parens'                => 'fnParens',
        'parse_less_color'      => 'fnParseLessColor',
        'phrase_dynamic'        => 'fnPhraseDynamic',
        'prefix'                => 'fnPrefix',
        'prefix_group'          => 'fnPrefixGroup',
        'prefix_title'          => 'fnPrefixTitle',
        'prefix_description'    => 'fnPrefixDescription',
        'prefix_usage_help'     => 'fnPrefixUsageHelp',
        'profile_banner'        => 'fnProfileBanner',
        'property'              => 'fnProperty',
        'rand'                  => 'fnRand',
        'range'                 => 'fnRange',
        'react'                 => 'fnReact',
        'alert_reaction'        => 'fnAlertReaction',
        'reaction'              => 'fnReaction',
        'reaction_title'        => 'fnReactionTitle',
        'reactions'             => 'fnReactions',
        'reactions_content'     => 'fnReactionsContent',
        'reactions_summary'     => 'fnReactionsSummary',
        'redirect_input'        => 'fnRedirectInput',
        'repeat'                => 'fnRepeat',
        'repeat_raw'            => 'fnRepeatRaw',
        'short_to_emoji'        => 'fnShortToEmoji',
        'show_ignored'          => 'fnShowIgnored',
        'smilie'                => 'fnSmilie',
        'snippet'               => 'fnSnippet',
        'strlen'                => 'fnStrlen',
        'structured_text'       => 'fnStructuredText',
        'templater'             => 'fnTemplater',
        'time'                  => 'fnTime',
        'transparent_img'       => 'fnTransparentImg',
        'trim'                  => 'fnTrim',
        'unique_id'             => 'fnUniqueId',
        'user_activity'         => 'fnUserActivity',
        'user_banners'          => 'fnUserBanners',
        'user_blurb'            => 'fnUserBlurb',
        'user_title'            => 'fnUserTitle',
        'username_link'         => 'fnUsernameLink',
        'username_link_email'   => 'fnUsernameLinkEmail',
        'widget_data'           => 'fnWidgetData'
    ];

    protected $defaultTests = [
        'empty' => 'testEmpty'
    ];

    protected $overlayClickOptions = [
        'data-cache',
        'data-overlay-config',
        'data-force-flash-message',
        'data-follow-redirects'
    ];
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу