Адаптация кода более поздних версий Joomla для Joomla 1.5

Рейтинг: 0Ответов: 1Опубликовано: 23.01.2015

Здравствуйте!

Попросили помочь с версией сайта для слабовидящих. Сайт на joomla 1.5.

Нашел ветку форума, где ведется обсуждение, и форумчане уже адаптировали шаблон к joomla, за что огромное спасибо им!

Вся беда в том, что версия моей joomla ниже, чем предложенный плагин и шаблон. Шаблон адаптировал - с ним проблем нет. Но к нему есть еще плагин, который запоминает состояние, какой шаблон используется.

Оригинальный код плагина:

defined( '_JEXEC' ) or die;

class plgSystemTemplateSwitcher extends JPlugin
    {
        function onAfterInitialise()
            {
                $input = JFactory::getApplication()->input;
                $session = JFactory::getSession();
                $template = $input->getCmd( 'template', '' );
                if ( $template !== '' ) {
                $session->set( 'templateChanged', $template );
                }
                if ( $session->get( 'templateChanged', '' )!== '' ) {
                $input->set( 'template', $session->get( 'templateChanged', '' ) );
                }
            }
    }

Немножко подправлен для версии 1.5:

defined( '_JEXEC' ) or die;

class plgSystemTemplateSwitcher extends JPlugin
    {
        function onAfterInitialise()
            {
                            $input = JFactory::getApplication()->input; // и вот проблема.
                $session = JFactory::getSession();
                $template = JRequest::getVar('template');
                if ( $template !== '' ) {
                    $session->set( 'templateChanged', $template );
                }
                if ( $session->get( 'templateChanged', '' )!== '' ) {
                                    //Ругается, что нет такого метода set()
                    $input->set( 'template', $session->get( 'templateChanged', '' ) );
                }
            }
    }

Выдает ошибку:

Fatal error: Call to a member function set() on a non-object

С Joomla сталкиваюсь впервые, может, кто знает аналог JFactory::getApplication()->input для версии 1.5?

Ответы

▲ 2Принят

Разобрался.

$input->set( 'template', $session->get( 'templateChanged', '' ) );

заменить на:

JRequest::setVar('template', $session->get('templateChanged'));