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

1.4.1 XenForo Addon Вывод в Sidebar MySQL

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

Загрузка
  1. Patriarh

    Patriarh Местный

    Регистрация:
    13.02.13
    Сообщения:
    27
    Симпатии:
    1
    Версия XF:
    1.4.1
    Немного запутался, прошу подскажите уважаемые девелоперы.

    Как известно в шаблонах можно юзать следующее {$visitor.username} и вместо username название любого столбца из таблицы xf_users.

    В собственных плагинах можно тоже задавать свои переменные для шаблона

    Контроллер:
    Код:
    <?php
    // Controller Donate
    class StreetDonate_ControllerPublic_Donate extends XenForo_ControllerPublic_Abstract
    {
        public function actionIndex()
        {
         
            $visitor = XenForo_Visitor::getInstance();
    
            $viewParams = $this->getModelFromCache('StreetDonate_Model_Donate')->getParams($visitor);
    
            return $this->responseView('StreetDonate_ViewPublic_Donate', 'StreetDonate_Donate', $viewParams);
        }
    
    }
    
    Модель:
    Код:
    <?php
    // Model Donate
    require_once("*******simpleDB.php");
    require_once("*******simpleMysqli.php");
    
    class StreetDonate_Model_Donate extends XenForo_Model
    {
        public $econs;
        public $group;
    
        function getParams($visitor)
        {
            switch($visitor['user_group_id'])
            {
                case 2: $group = 'FISH'; break;
                case 3: $group = 'Куратор'; break;
                case 5: $group = 'NORMAL'; break;
                case 6: $group = 'PREMIUM'; break;
            }
         
            $settings = array(
                        'server' => '*******',
                        'username' => '*******',
                        'password' => '*******',
                        'db' => '*******',
                        'port' => '*******',
                        'charset' => '*******'
                    );
                 
            $db = new simpleMysqli($settings);
         
            $query = $db->selectRow("SELECT balance FROM ******* WHERE username = '{$visitor['username']}'");
         
            return array(
                'username' => $visitor['username'],
                'lk_imps' => $visitor['bablo'],
                'econs' => $query['balance'],
                'group' => $group
            );
        }
    
    
    Выше указал рабочий код, но работает он на выделенном роутинге и если использовать в определенном шаблоне.

    Собственно вопрос как допустим вывести переменную $group в sidebar? Пробывал инклюдить шаблон StreetDonate_Donate выводит пустоту. Но соответственно на выделенном роутинге выводит то что нужно.
     
  2. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Нужно расширять контроллер, выводящий в сайдбар.
     
  3. Patriarh

    Patriarh Местный

    Регистрация:
    13.02.13
    Сообщения:
    27
    Симпатии:
    1
    Версия XF:
    1.4.1
    Можно подробнее пожалуйста :rolleyes:
    --- добавлено : 14 июл 2015 в 23:30 ---
    Пока попробую hook сделать
     
    Последнее редактирование модератором: 22.07.2015
  4. infis

    infis Местный

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

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