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

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

Нет прав для скачивания
Совместимость с XenForo
  1. 1.5
logo_gx.png

Вы наверное сталкивались с такой проблемой, вывести в карточках пользователя (дополнительные поля, но они хранятся в формате 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;

Ну или ставим любое дополнение на выбор, чтобы каждый раз не лазить в config.php
Этот этап завершен. Вы включили режим отладки.

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:
<?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:
<?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

Вот пожалуй и всё.

Если вам влом создавать файлы и вписывать всё, скачайте просто архив.

Автор: Георгий Шевченко
Автор
Георгий Шевченко
Скачивания
5
Просмотры
295
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Георгий Шевченко

Поделиться ресурсом

Назад
Сверху Снизу