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

1.2.4 Дополнительные поля пользователя

Тема в разделе "Основные вопросы по XenForo", создана пользователем Vladis, 27.01.2014.

Загрузка
  1. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    Не могу понять, как обращаться к данным из этих полей в темплейтах. Судя по оффсайту, нужно ввести:
    Код:
    {$visitor.customFields.fieldId}
    то есть в моём случае, как я понял:
    Код:
    {$user.customFields.team.value}
    Только вот ничего не работает. Перепробовал и другие варианты, но никак. (
     
  2. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Сначала напишите как создавали эти пользовательские поля
     
    Vladis нравится это.
  3. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    Через стандартные средства: выпадающее меню с выбором одного варианта, ID - team.
     
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    А не пробовали {$visitor.customFields.team} ?
    В крайнем случае сделайте дамп нужной вам переменной. Например так:
    {xen:helper dump, $visitor} или {xen:helper dump, $user}
     
    Vladis нравится это.
  5. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    $visitor работает, но это не то, что нужно.
    По дампам у юзера такого поля нет, у визитора - есть.
     
  6. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    А где хотите вывести? просто дополнительные поля не на всех страницах подгружаются из базы
     
  7. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    на страничке дополнения XenStaff
     
  8. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    ошибка в коде дополнения
    надо в файле \XenStaff\ControllerPublic\Index.php
    PHP:
        $staffUserInfo $staffUserInfoModel->getUsersByIds($staffIds$staffOptions = array());
    заменить на
    PHP:
        $staffUserInfo $staffUserInfoModel->getUsersByIds($staffIds$staffOptions = array('join' => XenForo_Model_User::FETCH_USER_FULL));
     
    Mirovinger, Vladis и infis нравится это.
  9. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    Уже лучше, по юзеру дампится, но так же не получается отобразить нужное поле. (
     
  10. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    заменить на:
    PHP:
    $staffUserInfo $staffUserInfoModel->prepareUserCards($staffUserInfoModel->getUsersByIds($staffIds$staffOptions = array('join' => XenForo_Model_User::FETCH_USER_FULL)));
     
    Mirovinger и Vladis нравится это.
  11. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    Грац! Проблема решена. )
     
    Yoskaldyr нравится это.
  12. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    Появился ещё один вопрос. Нужно обратиться к значению value из доп. поля, а не choice, в случае {$user.customFields.team}. Вариант {$user.customFields.team.value} возвращает только первую букву.
     
  13. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    надо просто {$user.customFields.team}
     
    Vladis нравится это.
  14. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    Это понятно и работает, но не так, как нужно, - берётся значение {$choice}, где нельзя ставить пробелы и писать слишком длинные значения. А вот {$value} этим требованиям удовлетворяет, но его использовать не получается.
     
  15. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Надо понимать как хранятся пользовательские поля. В базе хранится только индекс, а не текстовое значение поля.
    если нужно текстовое значение то надо выбирать и все пользовательские поля
    вместо:
    PHP:
        $viewParams = array(
           
    'staffgroups' => $staffGroups,
           
    'staffgroupsuserids' => $staffGroupsUserIds,
           
    'staffuserinfo' => $staffUserInfo,
           
    'staffonline' => $staffOnline
         
    );
    надо так (хотя решение кривое и делать надо во вью классе, но т.к. его в данном хаке нет - то будет так):

    PHP:
        $fieldModel XenForo_Model::create('XenForo_Model_UserField');
        
    $customFields $fieldModel->prepareUserFields($fieldModel->getUserFields(), true);
        foreach (
    $customFields AS &$field)
         {
           
    $field['fieldValueHtml'] = XenForo_ViewPublic_Helper_User::getUserFieldValueHtml($field);
         }

        
    $viewParams = array(
           
    'customFields' => $customFields,
           
    'staffgroups' => $staffGroups,
           
    'staffgroupsuserids' => $staffGroupsUserIds,
           
    'staffuserinfo' => $staffUserInfo,
           
    'staffonline' => $staffOnline
         
    );
    ну и в шаблонах соответственно обращаться что-то типа:
    HTML:
          <xen:if is="is_array({$customFields.{$user.customFields.team}.fieldValueHtml})">
             <xen:foreach loop="{$customFields.{$user.customFields.team}.fieldValueHtml}" value="$_fieldValueHtml">
               {xen:raw $_fieldValueHtml}
             </xen:foreach>
           <xen:else />
             {xen:raw {$customFields.{$user.customFields.team}.fieldValueHtml}}
           </xen:if>
    
     
    Vladis нравится это.
  16. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    А разве не настраивается отображение вывода в "HTML для вывода значения"? Там как раз и указывается, что должно выводиться: значение, индекс и т.д.
     
  17. Vladis

    Vladis Новичок

    Регистрация:
    13.01.14
    Сообщения:
    9
    Симпатии:
    1
    Версия XF:
    1.2.4
    Не хочет оно работать. Вот пример: http://vladenisov.ru/XenStaff/
    C префиксом My - как отображается мой способ. Ваш вариант вообще не виден.
    --- добавлено : Jan 31, 2014 1:07 PM ---
    Это если выводить в профиль, нет?
     
    Последнее редактирование модератором: 08.02.2014
  18. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    По идее должно быть просто для вывода. Независимо от места. Ну по логике так. А на самом деле - хз, я не проверял.
     
  19. Obs

    Obs Новичок

    Регистрация:
    24.12.13
    Сообщения:
    4
    Симпатии:
    2
    Версия XF:
    1.2.4
    Здравствуйте.
    Подскажите, как вывести дополнительные поля в шаблоне member_list_item (Форум -> Пользователи).
    Пытаюсь вывести в таком формате: {$user.customFields.ид_поля}, но не выходит.
    Тут пишут, что нужно добавить
    $users = $userModel->prepareUserCards($users);
    в
    library/XenForo/ControllerPublic/Member.php,
    но не помогает.
    Плюс, я заметил, что этот кусок кода теперь находится в методе с другим именем.
    Не могу постичь, как это сделать =)
     
  20. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Для начала надо отфильтровать все вредные советы (которые были в посте на офе). Правка оригинальных файлов движка, уж поверьте, до добра не доведет. По идее надо написать плагин, который расширит нужный контроллер и сделает через TMS нужные изменения в шаблоне. Вот тогда это будет корректно работать, а также при обновлении движка форума либо продолжит работать, либо потребует минимальных правок для работоспособного состояния. Ну и не поломает совместимость с другими плагинами.
     
    Mirovinger нравится это.

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