Новости 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 Гость просматривают эту тему.
  • 16 Ответов
  • 4620 Просмотров
*

_EBGEN_

  • Захожу иногда
  • 148
  • 1 / 0
Как сделать общий логин и профили на сайтах, которые расположены на одном хостинге?
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
это друг мой тебе следует поковырять сайты так чтобы одну базу использовали)
*

_EBGEN_

  • Захожу иногда
  • 148
  • 1 / 0
 Да вот и я об этом думаю. Только где же ковырять то? Нужно только пару модулей да компонентов чтобы были общими, а не весь сайт.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Ковыряй модели компонентов как правило каталог models в админке и helper.php модулей.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
может настроить авто-копирование между базами?

или как вариант оба сайта на 1 базу повесить с разными перфиксами таблиц и перековырять пользаков-но это геморно очень)
а может и найду что то)

какой нибудь мультилогин)
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
Jms Multisite 1.2.8 попробуй ,сам не пробывал но вот может поможет
http://zalil.ru/31045457
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
и вот еще

SYNK v1.5.3 - Joomla Database

Превосходный компонент Joomla! от разработчиков Dioscouri.com. Компонент Synk позволяет Вам полностью синхронизировать базы данных на сайтах под управлением CMS Joomla!  Компонент дает возможность синхронизировать любую таблицу в базе (например  jos_user, com_content и.т.д). Компонент позволяет добавить к синхронизации дополнительные возможности (время и дата синхронизации, удаление, вставка таблиц и.т.д). У Вас появится отличная возможность синхронизировать пользователей на различных веб-проектах и сайтах.
*

_EBGEN_

  • Захожу иногда
  • 148
  • 1 / 0
Большое спасибо! Буду пробовать )

SYNK кстати чёто нифига не ищет в гугле.

Multisite тоже не подходит. Пишет мильен ошибок, требует регистрации.. хочется чего-то простенького и бесплатного ) а главное - работающего.
« Последнее редактирование: 16.05.2011, 10:29:34 от _EBGEN_ »
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
*

_EBGEN_

  • Захожу иногда
  • 148
  • 1 / 0
)

У меня появилась другая идея. А можно ли поменять шаблон и убрать главное меню на одной или более других страниц?
*

_EBGEN_

  • Захожу иногда
  • 148
  • 1 / 0
Хм. Может тогда и не придется всё синхронизировать. А не подскажите как сделать так? Чтобы шаблон, контент, модули и меню были отличными от основной страницы.
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
примени шаблон который хочешь для контента модулей и меню как дефолтный....
а тот что для главной зайди в него и поставь для меню главная...))

если не получится то ставь тот шаблон для всех кроме главной
а второй только для главной))
*

_EBGEN_

  • Захожу иногда
  • 148
  • 1 / 0
Ну и как сделать?) поэтапно..) Я такого не находил в шаблонах) И насчет меню.. чёто мне кажется не получится. Попробовать конечно же стоит.
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
заходи в шаблоны...ставь дефолтным тот который для всего кроме главной...
далее выбирай другой шаблон (что для главной) заходи в него и выбирай меню в каком нужно чтобы он отображался(через Cntrl можно выбрать несколько)
*

_EBGEN_

  • Захожу иногда
  • 148
  • 1 / 0
Ок, ща попробуем ) завтра уже отпишусь.
*

Begotten

  • Захожу иногда
  • 81
  • 0 / 1
Кто уже пользовался или пользуется коспонентом synk? Напишите в личку мне! Очень надо!

И вообще. Кто решил вопрос с одним логином на все сайт? Напишите!
*

Begotten

  • Захожу иногда
  • 81
  • 0 / 1
Всё ровно! Компонент Synk работает. Только когда создаете события, то выбырайте Событие Joomla. И В заголовок тоже специальный нужен. Вот какие:

onLoginUser
onLogoutUser
onAuthenticate
onAuthenticateFailure
onBeforeStoreUser
onAfterStoreUser
onBeforeDeleteUser
onAfterDeleteUser

Каждое - это заголовок отдельного события. Потом подключаем БД и префикс там же указываем. Например: jos_

Потом добавляем синхронизацию, в неё подключаем события созданные ранее. Потом включаем БД и синхронизацию и всё работает)))ф
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Чем лучше всего делать резервные копии сайта?

Автор 7Azimuth

Ответов: 115
Просмотров: 57397
Последний ответ 29.11.2023, 14:41:12
от sivers
Joomla 1.5 как убрать кнопку редактировать материант с сайта

Автор andriy465

Ответов: 5
Просмотров: 3651
Последний ответ 12.11.2023, 23:37:03
от all_zer
Как сделать появление случайных картинок из пяти разных категорий?

Автор Katy93

Ответов: 2
Просмотров: 2787
Последний ответ 03.05.2021, 21:34:20
от sivers
Не могу распаковать jpa архив сайта Akeeba backup. ajax error

Автор smadkz

Ответов: 4
Просмотров: 1776
Последний ответ 26.12.2020, 15:15:15
от stendapuss
Версия сайта для слабовидящих

Автор nikos

Ответов: 22
Просмотров: 44206
Последний ответ 27.11.2020, 11:04:18
от chernobyl