Новости 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 Ответов
  • 3060 Просмотров
*

Dim

  • Захожу иногда
  • 88
  • 0 / 0
  • Чпок
ПРитветствую всех, меня зовут Дима :)
Дело в том что я столкнулся с глюком либо в joomla либо у себя в голове, так вот..
Я делаю оформление шаблона с нуля, потому что готовое меня не привлекает.
В процесе труда столкнулся с проблемой, теги a:link, a:hover, a:visited и a:active некоректно работают.
При задании цвета посещённой ссылки такого же как у обычной (не посещённой)  после посещения значение тега a:hover перестаёт учитыватся, то есть при наведении на ссылку я сделал чтоб она подсвечивалась но с уже посещёнными ссылками этого не происходит, (а в броузере Опера выделение a:hover не работает вобше).
Дальше я беру значение a:visited и вытираю всё что там указано, и о чудо - работает, вот только все ссылки вместо цвета указаного в теге a:link, становятся фиолетовыми, при этом ни в одном css такой цвет не указан, не выставлен нигде.
Вот код сылок
Цитировать
a:link {
   color: #FFCC33;
   text-decoration: none;
}
a:hover {
   text-decoration: underline;
   color: #666666;
}
a:visited {
   color: #FFCC33;
   text-decoration: none;
}
a:active {
   color: #FFFFFF;
   text-decoration: underline;
}
подскажите пожалуйста в чём загвоздка?

2. Ещё вопрос, верхне меню которое горизонтальное, как и где настраиваются в нём расстояния между пунктами меню помимо настроек самой модификации в админцентре, ато кроме как выставлять между пунктами знаки "/ ""|" другого способа не нахожу.

Великая всем благодарность за поддержку!   
 
*

gdX

  • Глобальный модератор
  • 995
  • 128 / 0
  • Открыт к заказам по дизайну
1. Если Вы используете подобный стиль описания ссылок, то помните такое правило:
При использовании псевдоклассов, надо делать в таком порядке: Link, Visited, Hover, Active
Можно запомнить этот порядок с помощью слов «LoVe/HAte» - «Любовь и Ненависть».
Другие комбинации этих псевдоклассов могут работать не корректно.

2. Расстояние между пунктами настраивается с помощью css.
Тут все зависит от того, как у Вас реализовано его отображение.
*

Dim

  • Захожу иногда
  • 88
  • 0 / 0
  • Чпок
1. Если Вы используете подобный стиль описания ссылок, то помните такое правило:
При использовании псевдоклассов, надо делать в таком порядке: Link, Visited, Hover, Active
Можно запомнить этот порядок с помощью слов «LoVe/HAte» - «Любовь и Ненависть».
Другие комбинации этих псевдоклассов могут работать не корректно.
Успех! Интересно они не коректно только в xhtml работают или в html тоже, ктож так придумал вобще :)
Цитировать
2. Расстояние между пунктами настраивается с помощью css.
Тут все зависит от того, как у Вас реализовано его отображение.
О, да я уже разобрался, оказивается всё просто)))))
Кстати, а как реализовать чтоб верхнее и нижнее меню имели отдельные (свои) a:link, a:visited, итд.
Ато изменение цветов в их классах(в моём случае это mainlevel-nav и mainlevel) на внещнем виде ссылок не сказываются :)


2.Ещё мне интересно, после создания готового шаблона, там же в CSS остаётся куча неиспользуемых классов и всего прочего, их желательно от туда убрать для ускорения работы способом который я себе не представляю, или же всё что есть, всё пригодится. Таблицу стилей мне сформировал плагин к Dreamweaver, называется "Media 65 Joomla Tenplate Kit 3.1"

Я буду писать в эту тему если вдруг проблемы появятся, хорошо?
« Последнее редактирование: 26.04.2009, 20:23:00 от Dim »
*

gdX

  • Глобальный модератор
  • 995
  • 128 / 0
  • Открыт к заказам по дизайну
Кстати, а как реализовать чтоб верхнее и нижнее меню имели отдельные (свои) a:link, a:visited, итд.
Ато изменение цветов в их классах(в моём случае это mainlevel-nav и mainlevel) на внещнем виде ссылок не сказываются
mainlevel выставляется у всех меню где бы они не находились и все стили будут выглядеть одинаково.
Значит, чтобы как-то визуально различить их, надо указывать свойства от более внешних блоков или уникальных идентификаторов.
Кстати, в настройках модуля, который выводит меню, есть параметр, где прописывается id, который ставится на тег ul, вроде.
Вот от него и можно шагать, чтобы добиться уникальной стилизации для любого меню.

2.Ещё мне интересно, после создания готового шаблона, там же в CSS остаётся куча неиспользуемых классов и всего прочего, их желательно от туда убрать для ускорения работы способом который я себе не представляю, или же всё что есть, всё пригодится.
Если делать стили всякими вспомогательными разработками, то да, может такое получаться.
Убрать их также легко, как они там очутились, не думаю, что получится.
Скорее всего придется вручную просмотреть что есть в шаблоне и что в стилевом файле, сравнивать и вычищать.
Лучший подход - это делать самому все с нуля. Так и излишек не будет.

Я буду писать в эту тему если вдруг проблемы появятся, хорошо?
Лучше создавайте новые темы, где более подробней задавайте свои вопросы.
Вопросы разной тематике в ветке «Вопросы по верхнему меню и ссылкам» наврятли будут увидены многими.
А еще лучше - воспользуйтесь сначала поиском.
Многие вопросы уже решены в дискуссиях.
Многие описаны в FAQ.
*

Dim

  • Захожу иногда
  • 88
  • 0 / 0
  • Чпок
mainlevel выставляется у всех меню где бы они не находились и все стили будут выглядеть одинаково.
У меня класс mainlevel на одном меню и mainlevel-nav на втором меняют только размер шрифта и расположение больше ничего.
Цитировать
Значит, чтобы как-то визуально различить их, надо указывать свойства от более внешних блоков или уникальных идентификаторов.
В div id заключил, но не помогло, не реагирует на настройки совсем, хотя смотрел в готовых шаблонах идентичной конструкции тот же код работает на ура..
Цитировать
Кстати, в настройках модуля, который выводит меню, есть параметр, где прописывается id, который ставится на тег ul, вроде.
Вот от него и можно шагать, чтобы добиться уникальной стилизации для любого меню.
Понял о чём речь, не опнял как буквально эту штучку можно применять, можете обяснить пожалуйста :)
« Последнее редактирование: 27.04.2009, 13:23:44 от Dim »
*

gdX

  • Глобальный модератор
  • 995
  • 128 / 0
  • Открыт к заказам по дизайну
У меня класс mainlevel на одном меню и mainlevel-nav на втором
Ну да, там, скорее всего, выставлен «Суффикс класса меню» в значение «-nav»

В div id заключил, но не помогло, не реагирует на настройки класса вобще, хотя смотрел в готовых шаблонах идентичная конструкция работает на ура..
Сложно что-то сказать не видя html конструкции и ее css.

Понял о чём речь, не опнял как буквально эту штучку можно использовать, можете обяснить пожалуйста :)
Ну вот изначально меню выводится так:
Код: html4strict
<ul class="menu"><li id="current" class="active item1">…</li></ul>

Если в настройках выставить «ID Меню» в значение «menuID», то на выходе получим такой код:
Код: html4strict
<ul class="menu" id="menuID"><li id="current" class="active item1">…</li></ul>

Т.е. для этого мкню можно уже создать уникальный внешний вид, исходя от идентификатора #menuID
*

gdX

  • Глобальный модератор
  • 995
  • 128 / 0
  • Открыт к заказам по дизайну
У меня класс mainlevel на одном меню и mainlevel-nav на втором
Ну да, там, скорее всего, выставлен «Суффикс класса меню» в значение «-nav»

В div id заключил, но не помогло, не реагирует на настройки класса вобще, хотя смотрел в готовых шаблонах идентичная конструкция работает на ура..
Сложно что-то сказать не видя html конструкции и ее css.

Понял о чём речь, не опнял как буквально эту штучку можно использовать, можете обяснить пожалуйста :)
Ну вот изначально меню выводится так:
Код: html4strict
<ul class="menu"><li id="current" class="active item1">…</li></ul>

Если в настройках выставить «ID Меню» в значение «menuID», то на выходе получим такой код:
Код: html4strict
<ul class="menu" id="menuID"><li id="current" class="active item1">…</li></ul>

Т.е. для этого меню можно уже создать уникальный внешний вид, исходя от идентификатора #menuID
*

gdX

  • Глобальный модератор
  • 995
  • 128 / 0
  • Открыт к заказам по дизайну
Какие-то глюки с форумом.
Если можно, то пусть модераторы 1 из ответов удалят.
*

Dim

  • Захожу иногда
  • 88
  • 0 / 0
  • Чпок
Сделал похожим образом, благодю!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ширина меню

Автор alex86r93

Ответов: 5
Просмотров: 4851
Последний ответ 14.06.2018, 05:13:50
от KANEGI
как сделать кнопки меню!

Автор Millenium_3000

Ответов: 10
Просмотров: 11366
Последний ответ 17.08.2017, 17:24:12
от Intrande
Вопрос по добавлению тега в МЕНЮ j 1.5

Автор berTalino

Ответов: 12
Просмотров: 4581
Последний ответ 29.03.2017, 16:20:43
от berTalino
Как увеличить ширину левого меню?

Автор afina2009

Ответов: 8
Просмотров: 2669
Последний ответ 09.04.2016, 23:00:36
от afina2009
Плавный якорь из меню на Jquery

Автор Timerlan

Ответов: 19
Просмотров: 3382
Последний ответ 04.02.2016, 03:54:16
от Fedor Vlasenko