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

salesekspert

  • Осваиваюсь на форуме
  • 13
  • 5 / 0
  • Очень полезно пообщаться с экспертами
Прошу помочь, так, как столкнулся с проблемой шире моих знаний и опыта.
Обновил Joomla! 3.10.12 Stable   до  Joomla! 4.3.2 Stable [ Bora ] 30-May-2023
Получил ошибки

Цитировать
Table 'gazaryan_fin.kczy9_finder_tokens' doesn't exist
Table 'gazaryan_fin.kczy9_finder_tokens_aggregate' doesn't exist
×
Предупреждение
Найдены устаревшие таблицы базы данных.
Кнопка  Исправить базу данных не приводит в порядок, к снятию уведомлений об ошибках.

При наведении на красный знак
Цитировать
1 проблема
  подсвечивается подробный список ошибок как я понимаю.

Привожу скрины с описанием ошибок.

1. Скрин админ панели


2. Скрин ошибок целиком


3. Привожу Скрин ошибок в текстовом формате

Цитировать
1 проблема
•   Таблица kczyQjnder.tokens1 содержит некорректный тип или атрибуты для столбца 'language' типа CHAR(7) (из файла 4.0.0-2018-G7-29.sql}.
•   Таблица lkczy9_finder_tokerisl содержит некорректный тип или атрибуты для столбца term' типа varchar(75) (из файла 4.0.0-2018-07-29.sql).
•   Таблица ,kczy9_finder_tokerisl содержит некорректный тип или атрибуты для столбца stem' типа varchar(75) (из файла 4.0.0-2018-07-29.sql).
•   Таблица 'kczySjoderJokens' не содержит индекса 'idx.stem' (из файла 4.0.0-2018-07-29.sqI}.
•   Таблица kczyQjnder.tokens1 не содержит индекса 'idxjanguage' (из файла 4.0.0-2018*07-29.sql).
•   Таблица kczy9Jnder.tokens.aggregate1 не должна содержать столбец map_suffix' (из файла 4.0.0-2018-07-29sql).
•   Таблица ,kczy9_finder_tokens_aggregateJ содержит некорректный тип или атрибуты для столбца language1 типа CHAR(7) (из файла 4.0,0-2018-07-29.sql).
•   Таблица 'kczy9_finder_tokens_aggregateJ содержит некорректный тип или атрибуты для столбца term1 типа varchar(75) (из файла 4.0.0-2018-07-29.sql).
•   Таблица kczy9_nnder_tokens_aggregateJ содержит некорректный тип или атрибуты для столбца stem" типа varchar(75) (из файла 4.0.0-2018-07-29.sql).
Таблица kczy9_finder_tokens_aggregateJ содержит некорректный тип или атрибуты для столбца term_weighif типа float unsigned (из файла 4.0.0-2018-07-29.sql).
•   Таблица kczy9_finder_tokens_aggregate' содержит некорректный тип или атрибуты для столбца context_weight'типа float unsigned (из файла 4.0.0-2018-07-29.sql).
Таблица kczy9_finder_tokens_aggregate' содержит некорректный тип или атрибуты для столбца totaLweight" типа float unsigned (из файла 4.0.0-2018-07-29.sql).
•   160 изменений базы данных проверены.
•   376 изменений базы данных не изменили структуру таблиц и были пропущены.
__________________________________________________________________

Я никогда не редактировал базы поэтому не знаю что читать и изучать дальше, чтобы сделать следущий шаг.
Прошу вас поделиться идеями куда смотреть, копать и чинить)
« Последнее редактирование: 01.06.2025, 12:03:13 от salesekspert »
*

azm1n

  • Захожу иногда
  • 102
  • 16 / 0
Привет, com_finder — это компонент умный поиск, зайди туда, посмотри что там, удали индекс, обнови вдруг что индекс слов. В общем направление — туда копать.
*

azm1n

  • Захожу иногда
  • 102
  • 16 / 0
Можешь еще зайти в базу данных, через phpMyAdmin, найти таблицу finder, там не одна таблица, и почистить ее содержимое, то есть не уладить таблицу, а почистить ее содержимое. Важно, сделать резервную копию сайта на всякий случай.
*

azm1n

  • Захожу иногда
  • 102
  • 16 / 0
Почисть содержимое вот этих таблиц kczy9_finder_tokens_aggregate и kczy9_finder_tokens, и не забудьте сделать резервную копию сайта, а точнее, базы данных.
*

salesekspert

  • Осваиваюсь на форуме
  • 13
  • 5 / 0
  • Очень полезно пообщаться с экспертами
Спасибо за отклик azm1n, сделаю и поделюсь результатами.
*

sivers

  • Живу я здесь
  • 2591
  • 360 / 0
Почисть содержимое вот этих таблиц kczy9_finder_tokens_aggregate и kczy9_finder_tokens, и не забудьте сделать резервную копию сайта, а точнее, базы данных.
Судя по сообщению, этих таблиц в базе нет. Их не чистить надо, а создать. Взять можно из другой Joomla (той же версии) или установить куда-нибудь новую и взять с нее. Брать надо только структуру таблиц (команда CREATE) без переноса данных, если они имеются у донора.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

azm1n

  • Захожу иногда
  • 102
  • 16 / 0
У меня Joomla 4, и у меня эти таблицы пустые, я умный поиск не использую, а возможно вы и правы, автору смотреть и решать что делать.
*

azm1n

  • Захожу иногда
  • 102
  • 16 / 0
А что будет, если Joomla обновить до версии Joomla! 4.4.13, это последний релиз Joomla 4, может таблицы создадутся, в общем как вариант, а возможно и нет, я не знаю, так предположения.
« Последнее редактирование: 01.06.2025, 14:55:01 от azm1n »
*

salesekspert

  • Осваиваюсь на форуме
  • 13
  • 5 / 0
  • Очень полезно пообщаться с экспертами
Спасибо за отклик sivers , уточните, пожалуйста, где почитать или видео посмотреть про аналогичную  процедуру копирования структуры таблиц?
Я с базой не сталкивался кроме импорта и экспорта Damp файла, поэтому боюсь творить без примера)
*

salesekspert

  • Осваиваюсь на форуме
  • 13
  • 5 / 0
  • Очень полезно пообщаться с экспертами
Цитировать
А что будет, если Joomla обновить до версии Joomla! 4.4.13, это последний релиз Joomla 4, может таблицы создадутся, в общем как вариант, а возможно и нет, я не знаю, так предположения.


azm1n[/url], я пробовал, но  не активна кнопка обновления, видимо, из-за 

1 проблема

где подсвечивается подробный список ошибок.
« Последнее редактирование: 01.06.2025, 20:04:28 от salesekspert »
*

sivers

  • Живу я здесь
  • 2591
  • 360 / 0
Спасибо за отклик sivers , уточните, пожалуйста, где почитать или видео посмотреть про аналогичную  процедуру копирования структуры таблиц?
Я с базой не сталкивался кроме импорта и экспорта Damp файла, поэтому боюсь творить без примера)
Зайдите в вашу БД (из панели хостинга, либо скачайте скрипт adminer.php с одноименного сайта). На сайте-доноре сделайте экспорт необходимых таблиц, выбрав только "структура" без данных. На своем сайте сделайте импорт полученного файла. Предварительно сохраните оба сайта в копию на всякий случай.
Либо закажите платную услугу у местных умельцев, если в себе не очень уверены.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

azm1n

  • Захожу иногда
  • 102
  • 16 / 0
Слушайте, так а в другой Joomla будет префикс таблиц другой, ему еще и префикс таблиц менять придется, или нет?
*

sivers

  • Живу я здесь
  • 2591
  • 360 / 0
ему еще и префикс таблиц менять придется, или нет?
Да, придется.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

salesekspert

  • Осваиваюсь на форуме
  • 13
  • 5 / 0
  • Очень полезно пообщаться с экспертами
Друзья Спасибо всем за отклик и отдельные советы.
Я оценил необходимые навыки для поддержания сайта Joomla в актуальном состоянии.
И кажется что мне предстоит учиться и учиться.
Проблема ограничивалась не только ошибками с базами данных.
Видимо из-за неудаления компонента  jshopping перед обновлением Joomla 3.10, возникла ещё проблема с этим компонентом  jshopping.



Как я не пробовал его удалять не получается.
Как я не пробовал его искать в папках и файлах сайта он не находится.
Сделал даже видео обзор этого процесса охоты на  jshopping.
https://rutube.ru/video/b9fed87c80b6681af76427e0a70977a6/

Слава Богу сайт о котором идёт речь он небольшой, только начал создаваться материалов там было всего 15
Поэтому  ошибки с базами данных и ошибки неудачного удаления компонента  jshopping я решил переносом всех материалов сайта на новый Joomla 5.3.1.

Может быть в будущем я столкнусь с аналогичной сложностью.
Если есть аналогичный опыт, как удалить этот компонент поделитесь.





« Последнее редактирование: 03.06.2025, 16:16:21 от salesekspert »
*

azm1n

  • Захожу иногда
  • 102
  • 16 / 0
Абсолютно правильное решение, что перенесли свой сайт на новую Joomla, если сайт молодой и небольшой это правильное решение. По поводу jshopping не знаю нечего, удачи, успехов!
*

azm1n

  • Захожу иногда
  • 102
  • 16 / 0
Если структура url адресов сохранена, то будет все в порядке, если нет, нужно будет сделать 301 редирект, или ждать полной переиндексации сайта.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Таблица в колонку при отображении на сотовом

Автор antipod

Ответов: 6
Просмотров: 1395
Последний ответ 02.07.2024, 12:37:05
от SK
Некорректный MimeType

Автор ivano183

Ответов: 5
Просмотров: 946
Последний ответ 14.05.2024, 20:21:08
от sivers
Адаптивная таблица в материале

Автор phvsfpgs

Ответов: 3
Просмотров: 1032
Последний ответ 18.09.2023, 00:58:25
от phvsfpgs
Таблица finder_links

Автор slalexpost

Ответов: 1
Просмотров: 1045
Последний ответ 22.05.2023, 11:17:15
от b2z
Некорректный вывод блога

Автор valexi1980

Ответов: 5
Просмотров: 651
Последний ответ 06.11.2021, 09:53:31
от draff