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

Sanserif

  • Новичок
  • 5
  • 0 / 0
Суть такая.
joomla 1.5.8, поставил русские языки с joomlaportal.ru, поставил JCE с офа.
Когда редактируешь текст - все ок.
Но стоит вызвать фрейм(нажать к примеру вставить картинку), кодировка меняется с UTF-8 на windows1251.
В HTML указано только UTF-8.
причем кодировка херится только в всплывающем окне (ifram'е).
Хелп плиз!
*

Sulpher

  • Живу я здесь
  • 2130
  • 402 / 16
  • Шаблоны и расширения Joomla
А в настройках мамбота JCE посмотрите, какая выставлена кодировка. Скорее всего, там windows-1251
*

Sanserif

  • Новичок
  • 5
  • 0 / 0
В свойствах плагина JCE вообще нету никаких параметров кроме
PARAM CUSTOM CONFIG    
PARAM CALLBACK

Я же еще раз говорю, в HTML в <head> идет content_type charset UTF, но по факту в заголовках апача почему-то отправляется именно windows1251.
К настройкам сервака доступа не имею, максимум могу с .htaccess поработать смогу. В нем кстати уже "AddDefaultCharset utf-8 " добавил.

*

Sanserif

  • Новичок
  • 5
  • 0 / 0
Переустановил все - компонент, плагин. Все исправилось.=)

Другой вопорс. Раньше если у таблицы border=0, то она [граница] становилась как-бы пунктирная. Сейчас вообще не видна. WTF ?
*

recived

  • Захожу иногда
  • 69
  • 6 / 0
А все таки в чем проблема заключается и как ее исправить не прибегая к переустановке? У меня такая же ерунда
*

recived

  • Захожу иногда
  • 69
  • 6 / 0
Проблему решил, в .htaccess добавил строчку AddDefaultCharset utf-8.
*

PREMIER

  • Захожу иногда
  • 164
  • 5 / 0
  • Самое важное — это мир во всём мире!
Проблему решил, в .htaccess добавил строчку AddDefaultCharset utf-8.
А в какой .htaccess добавил, в основной корневой или локальный создал в com_jce?
*

PREMIER

  • Захожу иногда
  • 164
  • 5 / 0
  • Самое важное — это мир во всём мире!
В общем я добавил в основной .htaccess и помогло, спасибо за совет, а то в настройках я установил UTF-8, но во всех открывающихся окнах была белеберда, заходишь в настройки кодировки браузера, там показывает UTF-8 ещё раз нажимаешь, страница перезагружается, тогда выскакивающие окна (ну при вставлении ссылки, картинки, при просмотре исходного кода) русский показывают нормально, а потом после сохранения снова белеберда. Теперь работает нормально всегда.
*

veselchak

  • Новичок
  • 4
  • 0 / 0
Подскажите пожалуйста, а где взять этот файл htaccess? Перелопатил весь компонент, но такого файла не нашел... Помогите, а то эти иероглифы в кнопках надоели.
*

PREMIER

  • Захожу иногда
  • 164
  • 5 / 0
  • Самое важное — это мир во всём мире!
Его можно просто создать, создать текстовой файл, потом через сохранить как, сохранить его под названием .htacces, прям так с точкой в начале, а перед ней ни чего.
*

veselchak

  • Новичок
  • 4
  • 0 / 0
Его можно просто создать, создать текстовой файл, потом через сохранить как, сохранить его под названием .htacces, прям так с точкой в начале, а перед ней ни чего.

а в какой директории его сохранять? можете указать путь? простите, я полный чайник и пытаюсь разобраться что к чему.
*

PREMIER

  • Захожу иногда
  • 164
  • 5 / 0
  • Самое важное — это мир во всём мире!
Это ты меня прости за не достаточную чуткость к начинающему.  ^-^

К сообщению прикреплён архив из него нужно извлечь файл .htaccess и бросить этот файл в корневую директорию сайта. Корневая директория сайта это то место где у тебя лежат все основные папки: administrator, cache, components, images и т.д, а так же основные файлы: configuration.php, index.php, index2.php и т.д. Так вот нужно бросить файл .htaccess, чтобы он валялся вместе с другими выше перечисленными файлами. Это стандартный файл htaccess.txt который у тебя так же валяется в корневой директории который был переименован в .htaccess и в который в конце были добавлены две строчки:

Код
AddDefaultCharset utf-8
php_value default_charset utf-8

Если возникнут какие-то проблемы можешь вторую строчку php_value default_charset utf-8 удалить.

Если у тебя в корневой директории уже есть файл с названием .htaccess то лучше его моим не заменять потому, что возможно в твоём файле другое содержимое после установки некоторых компонентов ЧПУ (SEF) - это компоненты которые преобразуют ссылки в более простые и понятные. В таком случае просто открой твой файл .htaccess в блокноте и добавь в конец вышеприведённые две строчки.

Если твой сайт находится на хостинге, а там нет встроенного простого редактора файлов используй специальные программы для подключения скажем по FTP, например Total Commander (платный, но все используют бесплатно) или FileZilla FTP Client (бесплатный).

[вложение удалено Администратором]
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Слетела кодировка после обновления

Автор Mick_20

Ответов: 15
Просмотров: 3145
Последний ответ 08.09.2019, 18:23:25
от Mick_20
Кодировка окна диалога при вставке картинок, ссылок и т.д.

Автор Filipp-Alex

Ответов: 6
Просмотров: 4191
Последний ответ 14.02.2012, 13:56:43
от Filipp-Alex
JCE и кодировка меню в окне браузера

Автор Oleg Lo

Ответов: 2
Просмотров: 4681
Последний ответ 15.04.2010, 18:02:50
от cambion