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

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

В шаблоне member_list_item
При попытке вывести дополнительные поля {xen:helper dump, $user.custom_fields}
Код:
a:7{s:3:"aim";s:0:"";s:8:"facebook";s:0:"";s:3:"icq";s:0:"";s:5:"skype";s:22:"shevchenko_george_1995";s:7:"twitter";s:0:"";s:5:"yahoo";s:0:"";}
Хелпер,который парсит этот самый JSON. Чтобы можно было спокойно без всяких заморочек, обращаться к дополнительным полям.

Инструкция:

1) Включаем режим отладки (в папке library -> config.php)
$config['debug'] = true;


2)
Переходим по ссылке /admin.php?add-ons/add Нам нужно создать дополнение и привязать его к нашему будущему парсингу Json.

ID дополнения: gx_json_parser
Заголовок: [GX] Helper (Json)
Информация о версии: 1.0.0
Номер версии: 1

Жмем сохранить дополнение.

Готово, мы создали дополнение пустое, к которому теперь всё будем цеплять.

3) Заходим на наш FTP и создаем в папке library-> папку GX в ней создаем папку Json.
После того как мы создали папки, переходим в конечную папку Json. И создаем 2 файла.
  • Helpers.php
  • Listener.php
И так мы создали, проверьте кодировку, должна быть UTF-8 (Без BOM).

Открываем файл Helpers.php
И вставляем туда этот код

Код:
<?php
class GX_Json_Helpers
{
    public static function JsonGXHelpers ($text)
    {
        $myFields = unserialize($text);
        $NewArr = array('fields' => $myFields);
    
        $newArray = array();
        foreach ($NewArr as $key => $value) {
            $newArray[$key] = $value;
        }
        return $newArray;
    }
}

Сохраняем его и закрываем файл.

Открываем теперь файл Listener.php
И вставляем туда этот код

Код:
<?php
class GX_Json_Listener
{
    public static function init(XenForo_Dependencies_Abstract $dependencies, array $data)
    {
        XenForo_Template_Helper_Core::$helperCallbacks += array(
            'json_gx' => array('GX_Json_Helpers', 'JsonGXHelpers'),
        );
    }
}
Сохраняем его и закрываем файл.
С файлами всё готово.

4) Идём обратно в админку.
Переходим во вкладку Разработка
Потом выбираем Обработчики Событий
Нажимаем создать новый обработчик события

Обрабатывать событие: init_dependencies
Подсказка события: [GX] Helper (Json)
Выполнить обработчик: GX_Json_Listener::init
Дополнение: [GX] Helper (Json)

Сохранить жмем.
И так, теперь наш helper json работает. Осталось его применить.


5) Создаем модификацию шаблонов /admin.php?template-modifications/add

Шаблон: member_list_item
Ключ модификации: gx_json_parser
Тип поиска: Простая замена
Найти:<xen:require css="xenforo_member_list_item.css" />
Замена:
Код:
<xen:require css="xenforo_member_list_item.css" />
<xen:set var="{$gx}" value="{xen:helper json_gx, $user.custom_fields}" />
Дополнение: [GX] Helper (Json)
Жмем сохранить.

6) Теперь вы можете выводить свои дополнительные поля.

Вместо такого вида
1json.png

Вот такой вид будет
2json.png


Обращаться вот так к полям.
{$gx.fields.aim}
{$gx.fields.facebook}
{$gx.fields.icq}
{$gx.fields.skype}
{$gx.fields.twitter}
{$gx.fields.yahoo}

Как своё поле использовать:
{$gx.fields.тут_id_вашего_поля}

Важно: Все манипуляции проводил в шаблоне member_list_item
Автор
Dima32
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Dima32