Отключить плагин в шаблоне

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 548 Просмотров
*

askona

  • Осваиваюсь на форуме
  • ***
  • 98
  • 2
Здравствуйте. На сайте используется 2 шаблона для пк и мобильной версии. Поставил плагин системных сообщений в модальном окне. Для версии пк все устраивает. Для мобильной версии необходимо отключить этот плагин. Требуется совет, каким образом запретить в мобильном шаблоне загрузку плагина?
Если хочешь сделать что-то хорошо, сделай это сам.(Фердинанд Порше)

*

AlekVolsk

  • Профи
  • ********
  • 6301
  • 336
Re: Отключить плагин в шаблоне
« Ответ #1 : 06.03.2016, 16:42:07 »
плагин и шаблон работают независимо друг от друга
мобильный шаблон грузится по какому-то условию (проверка типа устройства?), модифицируйте плагин так, чтобы в нем производилась такая же проверка, и в случае срабатывания на моб.устройстве он просто не отрабатывал

*

askona

  • Осваиваюсь на форуме
  • ***
  • 98
  • 2
Re: Отключить плагин в шаблоне
« Ответ #2 : 06.03.2016, 16:50:49 »
То есть в в index.php мобильного шаблона запретить загрузку плагина не возможно? Использую mobile Joomla там в настройках можно отключить плагины для мобильной версии но системных плагинов в списке нет.
« Последнее редактирование: 06.03.2016, 16:54:23 от askona »
Если хочешь сделать что-то хорошо, сделай это сам.(Фердинанд Порше)

*

AlekVolsk

  • Профи
  • ********
  • 6301
  • 336
Re: Отключить плагин в шаблоне
« Ответ #3 : 06.03.2016, 16:56:45 »
не, в шаблоне запретить работу системного плагина нельзя

*

Филипп Сорокин

  • Практически профи
  • *******
  • 1781
  • 135
Re: Отключить плагин в шаблоне
« Ответ #4 : 06.03.2016, 17:28:13 »
Отключить плагин можно, но может быть слишком поздно:

Код
if($is_mobile)
{
    $instance = JEventDispatcher::getInstance();
    $observers = $instance->get('_observers');
    
    foreach($observers as $key => $observer)
    {
        if(is_object($observer) && get_class($observer) === 'PlgSystemНазваниеплагина')
        {
            unset($observers[$key]);
        }
    }
    
    $instance->set('_observers', $observers);
}

Отключать плагин в шаблоне может быть бессмысленно, т.к. он к этому времени может уже отработать. Нужно смотреть, при каких событиях отрабатывает этот плагин. Всё, что отрабатывается до onAfterDispatch вы уже не отмените.
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг

*

AlekVolsk

  • Профи
  • ********
  • 6301
  • 336
Re: Отключить плагин в шаблоне
« Ответ #5 : 06.03.2016, 17:52:50 »
Это не поможет: системные плагины отрабатывают до начала любых рендеров данных на фронт

*

askona

  • Осваиваюсь на форуме
  • ***
  • 98
  • 2
Re: Отключить плагин в шаблоне
« Ответ #6 : 06.03.2016, 18:01:05 »
Визуально создается ощущение, что вначале загружается страница а потом отрабатывает плагин( иногда выскакивает стандартное системное сообщение а потом выскакивает модальное окно) Буду пробовать. Спасибо за советы.
Использую плагин System Message Freeow .
« Последнее редактирование: 06.03.2016, 18:04:47 от askona »
Если хочешь сделать что-то хорошо, сделай это сам.(Фердинанд Порше)

*

Филипп Сорокин

  • Практически профи
  • *******
  • 1781
  • 135
Re: Отключить плагин в шаблоне
« Ответ #7 : 06.03.2016, 18:12:44 »
Это не поможет: системные плагины отрабатывают до начала любых рендеров данных на фронт
Ошибаетесь. Это работает, правда не для всех событий. Можете поэкспериментировать сами. Собственно, у меня была похожая задача.
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг

*

Филипп Сорокин

  • Практически профи
  • *******
  • 1781
  • 135
Re: Отключить плагин в шаблоне
« Ответ #8 : 06.03.2016, 18:43:27 »
Не заметил, что автор сидит на старой версии CMS. Для Joomla 2.5 вместо JEventDispatcher нужно вызывать JDispatcher:
Код
$instance = JDispatcher::getInstance();
Как же надоело уже в этом старье копаться! Ну когда вы все обновитесь? :)
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг