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

AlexanderKiselev

  • Захожу иногда
  • 56
  • 1 / 0
Ребят, я гуглил, искал так и не нашёл работающего конкретного ответа... >:(

Требуется взять материалы, категори и перенести на другой сайт.
Пробовал экспортировать таблицы не работает...
content
category
section

Спасибо всем за помощь. Дико неудобно спрашивать такую тупость ,но у меня не получается.
Просто я закосячил свой сайт, и теперь хочу всё сделать по новой, но 600 статей не могу оставить без внимания и переноса.
Спасибо!
*

kamit

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

dremora

  • Захожу иногда
  • 461
  • 48 / 12
Если категории и секции одинаковые, то можно запрос выполнить.
Всё что не анархия, то фашизм...
*

Invisibleon

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
AlexanderKiselev
заходи в phpmyadmin - экспортируй две таблицы jos_content и jos_categories (категории впринципе не обязательно, после переноста статей перенесешь через админ-панель в ту категорию какую надо)

открывай jos_content блокнотом (лучше Notepad++), далее ищи строчку (практически сразу будет около 50-100 строки):
Код
--
-- Дамп данных таблицы `jos_content`
--

INSERT INTO `jos_content` (`id`, `title`, `alias`, `title_alias`, `introtext`,
тебе нужен кусок "insert into" - вставка статей в базу данных.

Каждая статья (материал) начинается так:
Код
(1, 'Welcome to Joomla!', '
где перва цифра - это номер статьи

на твоем другом сайте наверняка есть статьи. Ты НЕ СМОЖЕШЬ импортировать старые статьи на новую базу - потому что у них будут совпадать номера.
Поэтому:

1) Открой новую базу и посмотри последний ID какой есть в новой базе
2) Открой старую базу и все ID статей поменяй на более большие значения (если в новой базе 100 статей(100-последний ID), то значит в твоей старой базе не должно быть ID ниже 100 (начинай нумеровать со 101 ID)
3) Копируешь код INSERT INTO из старой базы (с измененными ID)
4) Открываешь phpmyadmin новой базы и тыкай вкладку SQL
5) Выполнить SQL-запрос(ы) к базе данных - вставляешь сюда код из 3его пункта

Выполняем запрос - готово. Впоследствии надо будет практически тоже самое с категориями сделать (если их много) или же тупо через админ-панель нового сайта раскидать заново все статьи
*

petrukjazz

  • Новичок
  • 1
  • 0 / 0
ребята спасибо))помогли сэкономить кучу времени,за что вам искренне благодарен))
*

echr

  • Новичок
  • 1
  • 0 / 0
Спасибо за детальный совет, специально зарегистрировался, чтобы иметь возможность поблагодарить.
AlexanderKiselev
заходи в phpmyadmin - экспортируй две таблицы jos_content и jos_categories (категории впринципе не обязательно, после переноста статей перенесешь через админ-панель в ту категорию какую надо)

открывай jos_content блокнотом (лучше Notepad++), далее ищи строчку (практически сразу будет около 50-100 строки):
Код
--
-- Дамп данных таблицы `jos_content`
--

INSERT INTO `jos_content` (`id`, `title`, `alias`, `title_alias`, `introtext`,
тебе нужен кусок "insert into" - вставка статей в базу данных.

Каждая статья (материал) начинается так:
Код
(1, 'Welcome to Joomla!', '
где перва цифра - это номер статьи

на твоем другом сайте наверняка есть статьи. Ты НЕ СМОЖЕШЬ импортировать старые статьи на новую базу - потому что у них будут совпадать номера.
Поэтому:

1) Открой новую базу и посмотри последний ID какой есть в новой базе
2) Открой старую базу и все ID статей поменяй на более большие значения (если в новой базе 100 статей(100-последний ID), то значит в твоей старой базе не должно быть ID ниже 100 (начинай нумеровать со 101 ID)
3) Копируешь код INSERT INTO из старой базы (с измененными ID)
4) Открываешь phpmyadmin новой базы и тыкай вкладку SQL
5) Выполнить SQL-запрос(ы) к базе данных - вставляешь сюда код из 3его пункта

Выполняем запрос - готово. Впоследствии надо будет практически тоже самое с категориями сделать (если их много) или же тупо через админ-панель нового сайта раскидать заново все статьи
*

enaaaa

  • Новичок
  • 3
  • 0 / 1
Помогите найти где находятся эти таблицы две таблицы jos_content и jos_categories  мне надо поменять ID МАТЕРИАЛОВ. Я вхожу в phpmyadmin но дальше глаза разбегаются в кучу у переносицы.

Потому что пришлось переносить материалы со старого шаблона в новый (шаблон ставился косячно, решили переносить), но ссылки к какой-то категории имели вид:

site.ru/категория-xxx/17-арыовавы-ывавыав-выв

Где 17 это номер ID

Сейчас материалы перенесены, все названия и алиасы сохранены, но блин ID у них lehubt? n/t/ все в яндексе слетит и будет вместо цифры 17 (и  других), совсем другие цифры. Надо поменять в новом сайте эти ID их немного - около 30, поэтому это не пугает, найти бы где менять. :)
« Последнее редактирование: 16.08.2012, 03:35:39 от enaaaa »
*

hooten

  • Захожу иногда
  • 443
  • 26 / 0
Цитировать
Помогите найти где находятся эти таблицы две таблицы jos_content и jos_categories
Они находятся в БД сайта

У всех браузеров есть поиск по странице.
« Последнее редактирование: 16.08.2012, 10:45:59 от hooten »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Изменить текст на вкладке браузера с "главная" на название сайта

Автор EvgeniyyB

Ответов: 11
Просмотров: 18342
Последний ответ 07.03.2018, 15:50:48
от vetalist
Вопрос по настройке новостной ленты на главной странице сайта

Автор jaff

Ответов: 13
Просмотров: 7635
Последний ответ 15.09.2017, 15:49:19
от sect
Произошел сбой сайта, пишет ошибку

Автор alex86r93

Ответов: 8
Просмотров: 2326
Последний ответ 28.03.2017, 18:11:57
от alex86r93
После переноса сайта на хостинг вылезает ошибка

Автор hausofdima

Ответов: 6
Просмотров: 2138
Последний ответ 20.03.2017, 23:53:39
от darkghost
Настройка SSL от RuCenter у сайта на Joomla 1.5.20

Автор КСС

Ответов: 19
Просмотров: 4855
Последний ответ 14.03.2017, 08:53:09
от flyingspook