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

mavik

  • Давно я тут
  • 570
  • 86 / 2
Сегодня попытался поставить плагин на Joomla 3.6 Установщик сообщает, что плагин успешно установлен, но ни самого плагина, ни его модуля в админке не обнаруживаю. Подскажите где собака порылась?  :(  !
Ставили версию 2.x? (предыдущие версии не совместимы с Joomla 3)
Есть ли файлы плагина в папке плагинов?
Есть ли плагин в перечне установленных расширений (управление расширениями)?
Должно быть: пакет, библиотека и сам плагин.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

colibri-th

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
 ! Вот скачал плагин с вашего форума. Установил. Сайт и админка вообще рухнули. Теперь не могу отключить этот плагин. Обновился до версии 3.6.3 не помогло.  :(

Откатился к старой версии, скачанной с сайта разработчика. Всё заработало. Ура!  :D
« Последнее редактирование: 20.10.2016, 11:10:38 от colibri-th »
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
! Вот скачал плагин с вашего форума. Установил. Сайт и админка вообще рухнули. Теперь не могу отключить этот плагин. Обновился до версии 3.6.3 не помогло.  :(

Откатился к старой версии, скачанной с сайта разработчика. Всё заработало. Ура!  :D

Хм, здесь ссылка на тот же самый файл, который вы можете скачать с моего сайта.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

colibri-th

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
А ещё я не нашел в новой версии включения изменения курсора при наведении на превью в виде увеличительного стекла, которое было в предыдущей версии плагина. Скажите, эта функция присутствует, или уже нет?
*

wahrenz

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Помогите, пожалуйста, кто может!
Сегодня ставил плагин mavikthumbnails с JED, затем с вашего сайта. При включении плагина сайт рушится, выходит такая ошибка
"Parse error: syntax error, unexpected '[' in W:\home\localhost\www\testterbuny.org\plugins\content\mavikthumbnails\mavikthumbnails.php on line 198"
При удалении знака [ появляется другая ошибка:
"Parse error: syntax error, unexpected T_DOUBLE_ARROW in W:\home\localhost\www\testterbuny.org\plugins\content\mavikthumbnails\mavikthumbnails.php on line 199"

Вот этот кусок кода (строки 198-200):

$this->dispatcher->trigger('onMavikThumbnailsBeforeGenerate', [
            'plugin' => $this, 'params' => $params
        ]);

Как я потом восстанавливал сайт - это отдельная история: я переименовывал файл mavikthumbnails.php, затем в панели администратора в управлении расширениями удалял плагин, еще что-то и библиотеку (3 расширения) и только тогда сайт и панель администратораначинали работать так, как до установки этого плагина
« Последнее редактирование: 20.10.2016, 11:53:44 от wahrenz »
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Вероятно вы используете старую версию PHP, в которой не поддерживается краткий синтаксис для массивов [].
В таком случае вам придется заменить все [...] на array(...)
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
А ещё я не нашел в новой версии включения изменения курсора при наведении на превью в виде увеличительного стекла, которое было в предыдущей версии плагина. Скажите, эта функция присутствует, или уже нет?

Визуальное оформление превьюшек удалено из плагино и оставлено на усмотрение авторов шаблонов.
Для превьюшек используется стандартный класс thumbnial, поэтому если автор шаблона предусмотрел для превью особое оформление, оно будет использовано. Так, например, во многих шаблонах вокруг превьюшек отображается рамка, которая пападаешт в шаблон из Bootstrap.

Возможно в следующем поколении плагина верну их как отдельно устанавливаемое дополнение.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

wahrenz

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Вероятно вы используете старую версию PHP, в которой не поддерживается краткий синтаксис для массивов [].
В таком случае вам придется заменить все [...] на array(...)
Большое спасибо! А когда на настоящий сервер сайт залью, синтаксис array() будет нормально работать с PHP возможно новой версии, новее чем на денвере?
*

wahrenz

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
и еще: если на сайт я заливаю картинку, скажем разрешения 1600х1000, то при увеличении она расширяется за пределы экрана, в версии на Joomla 1.5 увеличение происходило по границы экрана, т.е. физического разрешения экрана. Блок настроек пропорции я весь исследовал, ничего не меняется...
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Синтаксис массивов array() поддерживается во всех версиях PHP, [] - только в новых.
Метод отображения полного изображения зависит от выбранного типа вслывающего окна.
Вы все перепробовали? В каком-то была такая возможность. Если не получается, то вечером проверю, возможно надо в настройках JS-скрипта поправить.
Ну и можете предложить свой вариант скрипта всплывающих окон.
Либо самостоятельно его добавить - плагин подхватит его и покажет в настройках.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

wahrenz

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Метод отображения полного изображения зависит от выбранного типа вслывающего окна.
Вы все перепробовали? В каком-то была такая возможность. Если не получается, то вечером проверю, возможно надо в настройках JS-скрипта поправить.
Ну и можете предложить свой вариант скрипта всплывающих окон.
Либо самостоятельно его добавить - плагин подхватит его и покажет в настройках.
Я пробовал на Slimbox 2 jQuery, для меня этот тип предпочтителен так, как с типом HighSlide картинки увеличиваются как надо, т.е. в размер окна браузера, но вокруг картинок появляется граница и самое главное при  увеличении большой картинки, например 1900х1200 она вмещается в размер окна браузера, но скрывает своим изображением маленькие превьюшечки навигации по картинкам, что неудобно
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Не нашел в Slimbox такой возможности. Если ошибаюсь, подскажиет какой параметр надо установить.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

wahrenz

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Не нашел в Slimbox такой возможности. Если ошибаюсь, подскажиет какой параметр надо установить.
Не совсем понял Ваш ответ, какую возможность Вы не нашли? и про какой параметр Вы меня спрашиваете?

Мне бы с типом Slimbox увеличивать картинки в размер окна браузера и не более, больше ничего от плагина не требуется. Большое спасибо!
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Мне бы с типом Slimbox увеличивать картинки в размер окна браузера и не более,

Вот этого и не нашел. Slimbox - готовый скрипт всплывающих окон http://www.digitalia.be/software/slimbox2/
Среди его возможностей мне не удалось найти вписывания картинки в размер окна.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
При включении плагина сайт рушится, выходит такая ошибка
"Parse error: syntax error, unexpected '[' in W:\home\localhost\www\testterbuny.org\plugins\content\mavikthumbnails\mavikthumbnails.php on line 198"

В версии 2.3.1 заменил [...] на array(...), оказывается не у вас одного старая версия PHP.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
Доброго дня!

В новой версии плагина обнаружил классную штуку - использования атрибута "srcset"

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

Спасибо, очень порадовали!

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

Ещё раз благодарю, приятно, что проект не стоит на месте!
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Отключить герерирование srcset можно в настройках на закладке Retina.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
Отключить герерирование srcset можно в настройках на закладке Retina.

Что-то не работает эта настройка... не отключает ни набор превьюшек с атрибутами srcset, ни скрипт "picturefill".

Версия плагина 2.3.1.pro
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Понятно. Значит забыл добавить отключение. Исправлю.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
Было бы круто, если бы picturefill тож отдельно отключался, последние версии браузеров и так понимают этот атрибут.  Ну... почти все.
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Было бы круто, если бы picturefill тож отдельно отключался, последние версии браузеров и так понимают этот атрибут.  Ну... почти все.

Все кроме IE и встроенного в android < 5.
Есть идея перед подключением проверять небольшим JavaScript нужен ли он браузеру.
Но для начала оставил подключение для всех.
В следующих версиях будут варианты.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
Ну так не понимают они "srcset" пусть показывают стандартный "src", такая ведь вроде идея у всего этого?

Понятно, будем ждать!
*

OlegKasumoff

  • Новичок
  • 1
  • 0 / 0
Отличный плагин. Использую его еще со времен Joomla 1.5. Уже давно перешел на Joomla 3. Однако, есть некоторая проблема.

После установки на локальном сервере выбросил вот такую ошибку "Parse error: syntax error, unexpected '[' in Z:\home\10.97.0.30\www\plugins\content\mavikthumbnails\mavikthumbnails.php on line 217". Помогло полное отключение плагина через утилиту phpMyAdmin. Но мне все же хотелось бы его использовать.

Не могли бы вы помочь в этом вопросе?!

Текущие версии:
php - 5.3.13
msql - 5.5.25
Joomla - 3.6.2

С уважением, Олег!
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Проверю. В одном месте уже исправлял новый синтаксис массивов [...] на старый array().
Похоже, что еще где-то осталось.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Вышла версия 2.3.2
Исправлено несколько выявленных ошибок, в том числе проблема с синтаксисом массивов [] и отключение адаптации под дисплеи с высоким разрешением (отключения ява-скрипта для старых браузеров пока нет, будет позже).

О всех выявленных ошибках прошу сообщать. В версию 2.3.х были внесене архитектурные изменения, что могло повлечь за собой появление новых ошибок.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
Доброго дня!

Захотел, чтоб с картинки на одной из страниц обрабатывались по другому. Полез в контекст.

И вот что, из условий:
  • Контекст - работает
  • Свойство объекта - что-то не захотело
  • Параметр запроса - работает

А хотелось-то сделать через: Свойство объекта - class - foto

Картинку в редакторе вставил так:
Код
<img class="foto" src="images/foto/000.jpg" alt="" />

В контексте вот скрин:


Также пробовал через: Свойство объекта - id - foto

Пока сделал через Itemid, что неправильно делаю с классом или id?
« Последнее редактирование: 01.11.2016, 13:20:05 от Театрал »
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Пока сделал через Itemid, что неправильно делаю с классом или id?

Неправильно поняли, что такое свойство объекта. Точнее, о каком объекте идет речь. Так вот, объект - это статья, модуль, либо другой объект содержащий текст. Поэтому указывать надо id статьи, а не из тега.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
Цитата: mavik
Поэтому указывать надо id статьи, а не из тега.

Точно! Так работает, спасибо!
« Последнее редактирование: 01.11.2016, 14:58:25 от Театрал »
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
И всё таки спрошу ещё.

Можно ли сделать следующее, или я слишком многое хочу от плагина?

Хочется чтоб по умолчанию, для изображений просто создавались уменьшенные копии, а с определённым классом использовать всплывающее окно или другие размеры по умолчанию.
Да так это всё настроить, чтоб не зависеть от контекста: id статьи, модуля или пункта меню.
« Последнее редактирование: 01.11.2016, 16:12:59 от Театрал »
*

mavik

  • Давно я тут
  • 570
  • 86 / 2
Хочется чтоб по умолчанию, для изображений просто создавались уменьшенные копии, а с определённым классом использовать всплывающее окно или другие размеры по умолчанию.
Да так это всё настроить, чтоб не зависеть от контекста: id статьи, модуля или пункта меню.

В текущей версии нет, но я подумаю над этим.
www.mavik.com.ua - Создание веб-сайтов на основе CMS Joomla.
Создание компонентов и модулей.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин "Русская типографика"

Автор Physicist

Ответов: 261
Просмотров: 156140
Последний ответ 13.03.2025, 20:06:50
от Olg
Owl Сarousel Images module for Joomla

Автор Muggs

Ответов: 0
Просмотров: 1290
Последний ответ 30.08.2024, 17:34:06
от Muggs
Мастерю плагин для админки - оплата налом или по карте при самовывозе

Автор kkmspb

Ответов: 0
Просмотров: 1279
Последний ответ 27.08.2024, 15:39:37
от kkmspb
News Calendar Joomla 3.0 - html5 - Rus

Автор leo78

Ответов: 27
Просмотров: 15040
Последний ответ 27.06.2024, 11:15:49
от Леон
Плагин LVSpoiler - спойлеры с динамической загрузкой изображений

Автор Arkadiy

Ответов: 449
Просмотров: 101889
Последний ответ 20.04.2024, 21:10:33
от Beer