1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.1.3 Получить информацию о пользователе на странице сайта

Тема в разделе "Вопросы и ответы по XenForo Framework", создана пользователем ApJIeKuHo, 10.03.2013.

Загрузка
  1. ApJIeKuHo

    ApJIeKuHo Местный

    Регистрация:
    08.03.13
    Сообщения:
    188
    Симпатии:
    28
    Версия XF:
    1.1.4
    Добрый день!
    Появилась необходимость получить информацию о пользователе на одной из страниц сайта.
    Использую связку Subdreamer + xenForo.
    Требуется на страничке Subdreamera вывести информацию о наличии новых сообщений пользователя.
    Все вроде бы есть уже готовое, но - не могу понять где взять информацию для скрипта(использую как раз именно его) что располагается в самом низу форума(если смотреть исходный код страницы):

    Код:
    <script>
     
     
    jQuery.extend(true, XenForo,
    {
        visitor: { user_id: 4 },
        serverTimeInfo:
        {
            now: 1362904972,
            today: 1362859200,
            todayDow: 0
        },
        _lightBoxUniversal: "0",
        _enableOverlays: "1",
        _animationSpeedMultiplier: "1",
        _overlayConfig:
        {
            top: "10%",
            speed: 200,
            closeSpeed: 100,
            mask:
            {
                color: "rgb(255, 255, 255)",
                opacity: "0.6",
                loadSpeed: 200,
                closeSpeed: 100
            }
        },
        _ignoredUsers: [],
        _loadedScripts: {"node_list":true,"node_category":true,"node_forum":true,"sidebar_share_page":true,"moderator_bar":true},
        _cookieConfig: { path: "/", domain: "", prefix: "xf_"},
        _csrfToken: "4,1362904972,b2e889e8d7b785ab0c2fefe45fd593a6adbc5f44",
        _csrfRefreshUrl: "login/csrf-token-refresh",
        _jsVersion: "bba17b4a"
    });
     
    </script>
    Интересует каким образом он формируется и как это все можно получить на не привязанной к форуму странице.
    Ид пользователя можно выдрать из кук, но вот как формируется токе я не нашел...
     
  2. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Яваскрипт Вам не поможет, так как он формируется только в генерируемой для пользователя странице. Поэтому нужно прямо из базы дергать нужные данные.
    ИМХО.
     
  3. ApJIeKuHo

    ApJIeKuHo Местный

    Регистрация:
    08.03.13
    Сообщения:
    188
    Симпатии:
    28
    Версия XF:
    1.1.4
    Так меня и интересует каким макаром формируется этот скрипт)
    Что бы узнать откуда дергать, надо знать что этот скрипт формирует)
    Ну по крайне мере я так думаю))
    Я просто не могу понять откуда берется то, что пихается потом в этот скрипт)
     
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Ну так не проще ли просто в базе данных посмотреть? А формирование массива для скрипта и прочее - это нужно ползать по исходникам движка.
    Можно, конечно, поискать, в каком шаблоне этот скрипт лежит. Затем найти класс, который этот шаблон вызывает. Если шаблон инклудится (что скорее всего), то не факт, что сразу будет видно (очевидно), какой класс нужно искать.
    Хотя я уверен, что должно быть что-то с названием Alert в названии класса. Ну и уже сам класс нужно исследовать на предмет того, какой запрос используется для "выуживания" оповещений.
    Есть и другой вариант. В режиме отладки можно подсмотреть, какие запросы выполняются. Ну и искать в исходнике движка в моделях нужные таблицы и/или поля. Как минимум, это упростит задачу поиска нужного файла php с моделью.

    В общем ищите :)
     
  5. ApJIeKuHo

    ApJIeKuHo Местный

    Регистрация:
    08.03.13
    Сообщения:
    188
    Симпатии:
    28
    Версия XF:
    1.1.4
    Да искать то ищу) Просто вдруг кто сталкивался..))
     
  6. ApJIeKuHo

    ApJIeKuHo Местный

    Регистрация:
    08.03.13
    Сообщения:
    188
    Симпатии:
    28
    Версия XF:
    1.1.4
    Все оказалось не так сложно как казалось =)
    Привожу как решил проблему. Если кто знает лучший вариант - буду благодарен)

    PHP:
    <?php
    $visitor 
    XenForo_Visitor::getInstance();
    $timenow XenForo_Application::$time;
    $dates XenForo_Locale::getDayStartTimestamps();
    $selectTime $dates["today"];
     
    echo 
    '
    <script>
     
     
    jQuery.extend(true, XenForo,
    {
        visitor: { user_id: '
    .$visitor[user_id].' },
        serverTimeInfo:
        {
            now: '
    .$timenow.',
            today: '
    .$selectTime.',
            todayDow: 0
        },
     
        _cookieConfig: { path: "/", domain: "", prefix: "xf_"},
      _csrfToken:  "'
    .$visitor[csrf_token_page].'",
        _jsVersion: "bba17b4a"
    });
    jQuery.extend(XenForo.phrases,
    {
        cancel: "Отмена",
     
        a_moment_ago:    "только что",
        one_minute_ago:  "минуту назад",
        x_minutes_ago:  "%minutes% мин. назад",
        today_at_x:      "Сегодня, в %time%",
        yesterday_at_x:  "Вчера, в %time%",
        day_x_at_time_y: "%day% в %time%",
     
        day0: "Воскресенье",
        day1: "Понедельник",
        day2: "Вторник",
        day3: "Среда",
        day4: "Четверг",
        day5: "Пятница",
        day6: "Суббота",
     
        _months: "Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь",
        _daysShort: "Вс,Пн,Вт,Ср,Чт,Пт,Сб",
     
        following_error_occurred: "Произошла ошибка",
        server_did_not_respond_in_time_try_again: "Сервер не ответил вовремя. Пожалуйста, попробуйте снова.",
        logging_in: "Авторизация",
        click_image_show_full_size_version: "Нажмите на это изображение для просмотра полноразмерной версии.",
        show_hidden_content_by_x: "Показать скрытое содержимое от {names}"
    });
     
    </script>
    '
    ?>
    Так же интересует что еще за _jsVersion: "bba17b4a" и как оно находится)
     

Поделиться этой страницей