[GX] Парсинг JSON + member_list_item

[GX] Парсинг JSON + member_list_item 1.0.0

Нет прав для скачивания

Георгий Шевченко

Проверенные
Сообщения
2,205
Реакции
4,393
Баллы
8,750
Пользователь Георгий Шевченко разместил новый ресурс:

[GX] Парсинг JSON + member_list_item - Парсим дополнительные поля пользователя из JSON.

Посмотреть вложение 61211
Вы наверное сталкивались с такой проблемой, вывести в карточках пользователя (дополнительные поля, но они хранятся в формате JSON). И на выводе, вы видите что-то такое :-)

В шаблоне member_list_item
При попытке вывести дополнительные поля {xen:helper dump, $user.custom_fields}...

Узнать больше об этом ресурсе...
 
Вы наверное сталкивались с такой проблемой, вывести в карточках пользователя (дополнительные поля, но они хранятся в формате JSON).
 
Как сделать для другой страницы? Никак не могу понять ну ёмаё

Делаю аналогичное с другим шаблоном, но не выводится :unsure:
В шаблоне conversation_quick_write вставляю данную строку в начало <xen:set var="{$gx}" value="{xen:helper json_gx, $user.custom_fields}" />
Потом как написано в инструкции вывожу контакты {$gx.fields.vk}, но не выводятся.
Как вывести в другой шаблон подскажите :rolleyes:
 
Последнее редактирование модератором:
Accord, скорее всего, массив $user не содержит элемента custom_fields. Это происходит, потому что где-то в коде автор дополнения не поставил парсинг таблицы xf_user_profile.
В шаблоне введите {xen:helper dump, $user.custom_fields} и покажите, что отдает.
 
Accord, скорее всего, массив $user не содержит элемента custom_fields. Это происходит, потому что где-то в коде автор дополнения не поставил парсинг таблицы xf_user_profile.
В шаблоне введите {xen:helper dump, $user.custom_fields} и покажите, что отдает.
NULL показывает
1535624554652.png
 
Accord, значит, мои догадки верны.

Открываем файл QuickWrite/XenForo/ControllerPublic/Conversation
Ищем
PHP:
$users = $this->model('{XF}:User')->getUsersByIds($userIds, [
            'join' => XenForo_Model_User::FETCH_LAST_ACTIVITY
        ]);

Меняем на
PHP:
$users = $this->model('{XF}:User')->getUsersByIds($userIds, [
   'join' => XenForo_Model_User::FETCH_LAST_ACTIVITY | XenForo_Model_User::FETCH_USER_PROFILE
]);
 
Accord, значит, мои догадки верны.

Открываем файл QuickWrite/XenForo/ControllerPublic/Conversation
Ищем
PHP:
$users = $this->model('{XF}:User')->getUsersByIds($userIds, [
            'join' => XenForo_Model_User::FETCH_LAST_ACTIVITY
        ]);

Меняем на
PHP:
$users = $this->model('{XF}:User')->getUsersByIds($userIds, [
   'join' => XenForo_Model_User::FETCH_LAST_ACTIVITY | XenForo_Model_User::FETCH_USER_PROFILE
]);
Дампом выдаёт вот это
1535630185330.png

Код
1535630244901.png
 
Accord, теперь есть данные. Пробуй
<xen:set var="{$gx}" value="{xen:helper json_gx, $user.custom_fields}" />
 
Последнее редактирование модератором:
Accord, вставьте это перед $myFields = unserialize($text);

var_dump($text);

И попробуйте снова открыть нужную страницу. Посмотрите исходный код после <body>.
 
Accord, дошло до меня в чем дело.
<xen:set var...> вставляйте внутри цикла foreach, так как переменной $user еще не существует..

Screenshot.jpg

<xen:set var="{$gx}" value="{xen:helper json_gx, $user.custom_fields}" />
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу