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

hapson

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
Здравствуйте.
Такой вопрос:
В медиа менеджере можно создавать папки, но работает это некорректно.
Если дать имя папке "Новая папка", то в менеджере я вижу "папка".
Если пишу "Новая_папка", то создается "_папка".
Однако через FTP видно, что папки создаются с теми именами, которые были введены. То есть через FTP видно "Новая папка" и "Новая_папка".

Если писать "New folder", то все ОК - она так и создается "New folder"

Вообщем трабл с отображение имени папки на русском из нескольких слов.

Ps версия EasyBlog 3.8.14427 с оф. русификатором
« Последнее редактирование: 09.05.2013, 15:39:46 от hapson »
*

AlexSmirnov

  • Завсегдатай
  • 1862
  • 272 / 16
  • Ищите и найдете
Сбросьте мне в личку свое имя пользователя, выбранное при покупке EasyBlog на stackideas.com.
# Back the fufalo (особенно ту самую столкершу)! #
# ВАЖНО! Кайфую от удаления присланного в личку спама, почти как от любви (особенно по выходным). #
*

hapson

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
Вообщем вот такие дела:
При создании папки пользователем в медиа менеджере, обрезается первое слово, если имя папки вводить русскими буквами, независимо от регистра. Если английскими, то все в норме. Если первая буква английская, а остальные слова названия русские - все в норме. Если поставить цифру и далее вводить название по-русски, то тоже все в норме. Вообщем как-то так:

новая папка -> папка
новая_папка -> _папка
моя новая папка в блоге -> новая папка в блоге
моя_новая_папка_в_блоге -> _новая_папка_в_блоге
1 моя папка -> 1 моя папка
N моя папка -> N моя папка
New folder -> New folder

Если смотреть на директорию через FTP, то там все в норме. Как папку назвал, так она там и называется.
В медиа менеджере EasyBlog не получается удалить папки с битыми именами, пишет "Невозможно удалить объект %1s с сервера. Извините, но не удалось найти запрашиваемый файл или папку."

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

hapson

  • Осваиваюсь на форуме
  • 44
  • 4 / 0
Да уж... а поддержка просто чумовая.
Обрисовал им проблему, сделал демонстрационное видео... А он показывает мне свои скрины и говорит, что у него все в норме.

PS еще заметил одну неприятную вещь. Выставляю уменьшение картинок, например, до 960*720 и качество 80%. Если исходная картинка в разрешении не более 960*720 включительно, то качество не меняется при загрузке. Если например картинка 961*721 пиксель, тогда резайз с изменением качества срабатывает.
С изменением разрешения понятно, но вот качество нужно менять независимо от исходного разрешения. Например, расширенный медиа менеджер JCE меняет качество независимо от разрешения, а если и разрешение превышает указанное, то режет и его.

Короче лажа с медиа менеджером, придется юзать и дальше инструменты JCE. Из-за чего хочется все же наладить менеджер EB - он вставляет в редактор уже уменьшенную картинку, что сокращает телодвижения юзера, не нужно в окне выставлять разрешение, менять размер в окне редактора и пр. Тупо: загрузил, вставил - все ОК. А в JCE вставляется огромная картинка в редактор, если не прописать размер.
« Последнее редактирование: 10.05.2013, 12:18:14 от hapson »
*

PunCom

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Вот решение проблемы

components/com_easyblog/classes/mediamanager/types/item.php
components/com_easyblog/classes/mediamanager/types/folder.php

Код
basename($this->file);
меняем на
Код
ltrim(str_replace(dirname($this->file), '', $this->file), '/');
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Easyblog - и русские имена пользователей

Автор Annaweb

Ответов: 2
Просмотров: 3117
Последний ответ 29.02.2012, 14:03:02
от Annaweb