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

1.1.0 Addon с GET-запросами... нужна помощь кодеров

Тема в разделе "Вопросы и ответы по XenForo Framework", создана пользователем lexikon, 3 дек 2011.

Загрузка
  1. lexikon

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

    Регистрация:
    11.10.11
    Сообщения:
    65
    Симпатии:
    24
    Версия XF:
    1.1.0 Final
    Здравствуйте...необходима помощь форумчан (
    Был у меня php скрипт, который в зависимости от того или иного GET-запроса доставал информацию из БД с 140 000 записей и помещал её в тело таблицы в середине HTML шаблона.
    Вот захотелось мне данный скрипт "вшить" в XenForo...естественно без помощи не обойтись((
    Создал значит дополнение, группу настроек...прописал префикс роутинга, написал класс ControllerPublic...пока на данный момент получились следующие вещи
    Код:
    class MyModInXF_ControllerPublic_MyMod extends XenForo_ControllerPublic_Abstract
    {
        public function actionIndex()
        {
            $UserSteamIdNotFound = false;
     
            $options = XenForo_Application::get('options');
            $visitor = XenForo_Visitor::getInstance();
     
            $userId = $visitor->getUserId();
     
            $USteamID = $this->_getMyModModel()->getUserFieldValues($userId);
     
            if($options->MyModInXF_userfieldSteam==true){
                if(empty($USteamID['Steam'])){
                      $UserSteamIdNotFound = true;
                  }
            }
     
            $viewParams = array(
                'onlyForUsers' => $options->MyModInXF_onlyForUsers,
                'fieldSteamNotific' => $options->MyModInXF_userfieldSteam,
                'UserSteamId' => $UserSteamIdNotFound ? null : $USteamID['Steam'],
                'UserSteamIdNotFound' => $UserSteamIdNotFound,
                'useSteamLib' => $options->MyModInXF_steamLibrary,
                'useMapFloater' => $options->MyModInXF_useMapFloater
            );
     
            return $this->responseView('MyModInXF_ViewPublic_Index', 'mymod', $viewParams);
        }
     
        public function actionMaplist()
        {
            $UserSteamIdNotFound = false;
     
            $options = XenForo_Application::get('options');
            $visitor = XenForo_Visitor::getInstance();
     
            $userId = $visitor->getUserId();
     
            $USteamID = $this->_getMyModModel()->getUserFieldValues($userId);
     
            if($options->MyModInXF_userfieldSteam==true){
                if(empty($USteamID['Steam'])){
                      $UserSteamIdNotFound = true;
                  }
            }
     
            $viewParams = array(
                'onlyForUsers' => $options->MyModInXF_onlyForUsers,
                'fieldSteamNotific' => $options->MyModInXF_userfieldSteam,
                'UserSteamId' => $UserSteamIdNotFound ? null : $USteamID['Steam'],
                'UserSteamIdNotFound' => $UserSteamIdNotFound,
                'useSteamLib' => $options->MyModInXF_steamLibrary,
                'useMapFloater' => $options->MyModInXF_useMapFloater
            );
     
            return $this->responseView('MyModInXF_ViewPublic_Index', 'mymod_maplist', $viewParams);
        }
     
        protected function _getMyModModel()
        {
            return $this->getModelFromCache('MyModInXF_Model_MyMod');
        }
    }
    Код:
    class MyModInXF_Route_Prefix_MyMod implements XenForo_Route_Interface
    {
        public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router)
        {
            $urlComponents = explode('/', $routePath);
            $subPrefix = strtolower(array_shift($urlComponents));
     
            switch($subPrefix)
            {
                case 'main':
                    $controllerName = 'MyModInXF_ControllerPublic_MyMod';
                    $routeName = 'mymod/';
                    $routeAction = 'index';
                    break;
                case 'maplist':
                    $controllerName = 'JumpTopInXF_ControllerPublic_MyMod';
                    $routeName = 'mymod/maplist';
                    $routeAction = 'maplist';
                    break;
                default:
                    $controllerName = 'MyModInXF_ControllerPublic_MyMod';
                    $routeName = 'mymod/';
                    $routeAction = 'index';
                    break;
            }
     
            return $router->getRouteMatch($controllerName, $routeAction, $routeName, $routePath);
        }
    }
    Собственно вопрос в следующем... для каждого action ControllerPublic'a мы как бы выводим переменные в шаблон... получается часть шаблона повторяется каждый раз(
    Как сделать чтобы был собственно центральный шаблон где будут иметься некоторые ограничения на группы юзеров, recuire, include, подгрузки js
    Но в зависимости от GET запроса в теле данного шаблона менялась информация

    не могу сообразить... нужна помощь (
     

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