Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

kurz

  • Захожу иногда
  • 105
  • 1 / 0
Футер уполз вверх
« : 29.06.2013, 20:17:01 »
На страницах с форумом происходит какая-то ерунда с футером (на остальных все нормально), футер уполз вверх. Дивную верстку знаю плохо, наверное накосячила. Страница с форумом skarb-papcha.ru/ru/forum.html
*

evgen777

  • Давно я тут
  • 657
  • 62 / 2
Re: Футер уполз вверх
« Ответ #1 : 29.06.2013, 20:25:55 »
http://skarb-papcha.ru/templates/shablon_kab/css/kab.css
Код
#footer, #footer-kl{}
уберите
Код
position:absolute;
Разработка, доработка расширений для Joomla!
*

kurz

  • Захожу иногда
  • 105
  • 1 / 0
Re: Футер уполз вверх
« Ответ #2 : 30.06.2013, 14:03:57 »
Спасибо evgen777! Сделала, конечно, в соответствии с вашими рекомендациями.
Все хорошо, но... Во-первых, так и не получится прижать к низу футер, при растягивающихся колонках? Рosition:absolute ведь исключительно для этого? Может быть я смешала все в одну кучу, и колонки и футер, а вместе это никак? Хочется знать, хоть на будущее, что делать с этим прижатым футером.
И, главное, обнаружилась еще одна бяка. Когда переходишь по ссылке-якорю, прокрутить обратно страницу вверх невозможно. Т.е. пространства вверху нет, зато внизу с избытком. Я сама все время перехожу по такой ссылке, последнее от такого-то, думаю не я одна. Куда ж попадаем, неизвестно. С этим как теперь побороться?
*

jouse

  • Захожу иногда
  • 131
  • 7 / 0
  • Не за что ^_^
Re: Футер уполз вверх
« Ответ #3 : 03.07.2013, 20:18:21 »
у вас кстати и главная страница с футером поджата, да и проблема с правым контейнером. Там пиксели +100500 поставили.
А на счет якоря - а он у вас где?
*

kurz

  • Захожу иногда
  • 105
  • 1 / 0
Re: Футер уполз вверх
« Ответ #4 : 04.07.2013, 13:09:09 »
Якорь -  "Последнее" от Робин Гуд   в Последних темах на skarb-papcha.ru/ru/forum.html. А главная страница - это главная сайта? Там макет другой. А что с правым контейнером, что это за пиксели +100500?
Сейчас я вставила в блок контента таблицу и убрала растягивание колонок. ВСе работает. Но на др. страницах (кнопка Кладоскоп) растягивание оставила. Вобщем, видать здорово там напутано!
Если есть время и не лень, пожалуйста, вправьте мозги.
*

jouse

  • Захожу иногда
  • 131
  • 7 / 0
  • Не за что ^_^
Re: Футер уполз вверх
« Ответ #5 : 04.07.2013, 14:21:26 »
Для начала, правый контейнер:
Спойлер
[свернуть]
http://skarb-papcha.ru/templates/shablon_glav/css/gl.css
у вас стоит код:
Код
#kol-left, #kol-right, #main { 
margin-bottom: -29880px;
padding-bottom: 30000px;
}
почти 30 тысяч пикселей вниз  ^-^ Подправьте хотя бы для себя.
И если вы хотите оставить футер на главной странице внизу, т.е. чтобы он был прижат совсем внизу, то так код и оставьте, а если нет, то как советовали выше, уберите там position: absolute.
Тоже самое это у вас отображается на форуме.

На счет якоря, это не якорь, а ссылка к последнему сообщению, а выше находятся предыдущие сообщения. Пустых мест я не вижу.
*

Entombed

  • Захожу иногда
  • 114
  • 11 / 0
  • Ума палата ... да ключ потерял
Re: Футер уполз вверх
« Ответ #6 : 04.07.2013, 14:55:42 »
Для прижатия футера к низу есть решение основанное на CSS.
http://www.cssstickyfooter.com/
И не надо ни какого шаманства с большими отступами.
Ничто не вечно под луной
*

kurz

  • Захожу иногда
  • 105
  • 1 / 0
Re: Футер уполз вверх
« Ответ #7 : 04.07.2013, 21:01:25 »
почти 30 тысяч пикселей вниз - так ведь это, чтоб колонки растягивались. Или как-то по-другому? Вернее можно по-другому, но мне показалось сложнее, чем это. Поэтому, как поправить не знаю.
А насчет якоря, после того, как я вставила таблицу в блок контента - все работает нормально.
*

kurz

  • Захожу иногда
  • 105
  • 1 / 0
Re: Футер уполз вверх
« Ответ #8 : 04.07.2013, 21:04:43 »
Entombed

Большие отступы для растягивания колонок, а не для прижатия футера.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться