Отображать системные сообщения внутри компонента, а не в шаблоне

По умолчанию системные сообщения Joomla 3 (сообщения, уведомления, предупреждения) отображаются в определенной позиции шаблона, используя

<jdoc:include type="message" />

Можно ли получить больше контроля над этими сообщениями и отображать их в разных положениях внутри контейнера моего собственного компонента?

Я попытался использовать jdoc выше в представлениях моего компонента (дешевый снимок), но не повезло. Есть ли способ «захватить» сообщения, созданные моим компонентом, с помощью стандартной системы обмена сообщениями Joomla и отображать их там, где я хочу?

Спасибо заранее.

8 голосов | спросил Isidro Baquero 12 FriEurope/Moscow2014-12-12T12:40:53+03:00Europe/Moscow12bEurope/MoscowFri, 12 Dec 2014 12:40:53 +0300 2014, 12:40:53

1 ответ


9

Хорошо, похоже, что копать немного больше. Я нашел ответ на свой вопрос. В основном я нашел этот плагин:

http://extensions.joomla.org/extensions/style-a /всплывающие окна-дизайн-а-фреймов /25240

Это не совсем то, что мне нужно, но, проверяя его код, я понял, как это сделать, что можно было бы суммировать следующим образом (в случае, если кто-то ищет этот вопрос):

  1. Если вы хотите сделать это правильно, вам нужно позаботиться о сообщениях Joomla по умолчанию, отображаемых в шаблоне, с помощью <jdoc:include type="message" />, чтобы сообщения не отображаются дважды
  2. Единственный способ справиться с этим - использовать плагин, который будет запущен в событии onBeforeRender
  3. В этом случае вам необходимо:
    • Получить сообщения, используя $app = JFactory::getApplication(); $messageQueue = $app->getMessageQueue();
    • Обработать сообщения по мере необходимости для вывода их в свой компонент
    • Очистить очередь сообщений, поэтому сообщения не отображаются дважды. В предыдущих версиях Joomla можно было напрямую очистить очередь с помощью метода, но в Joomla 3 вам нужно заменить существующую очередь на пустую.
  4. Вот и все, у вас есть сообщения, выставленные в системе обмена сообщениями Joomla по умолчанию, доступной в вашем компоненте.

Это требует некоторой работы, но я думаю, что общий путь к следующему ясен. Надеюсь, это полезно для кого-то другого в подобной ситуации.

ответил Isidro Baquero 12 FriEurope/Moscow2014-12-12T13:42:35+03:00Europe/Moscow12bEurope/MoscowFri, 12 Dec 2014 13:42:35 +0300 2014, 13:42:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132