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

Fon

  • Новичок
  • 0
  • 26 / 2
автор servise
*******************************************
Чтобы создать форму обратной связи (контактную форму), вовсе не обязательно собственными силами делать ее с нуля - можно воспользоваться готовым примером. В любом случае для начала советую установить русифицированную версию компонента - разобраться со всем в ней будет намного проще.

Теперь о создании необходимой Вам формы (поэтапное руководство):
1. В административной панели сайта осуществляем переход 'Компоненты - FacileForms - Формы'.
2. Во вкладке "Пакет:" вновь открывшегося окна выбираем Samples (Примеры). Будет выведен список уже готовых форм, включенных в пакет поставки по умолчанию.
3. Поставленным перед нами задачам наилучшим образом соответствует форма с заголовком "Contact form". Чтобы оставить содержимое пакета примеров в том виде, в каком оно есть сейчас, сделаем копию готовой формы. Для этого установим флажок напротив "Contact form" и в панели инструментов справа вверху нажмем иконку "Копировать".
4. Форма была успешно скопирована, переходим к непосредственному редактированию копии (последняя в списке готовых форм). Кликаем по ее заголовку.
5. В открывшемся окне представлена подробная информация об использованных в ней полях и текстовых элементах, в правой части поверх всего остального - окно с внешним видом конструируемой формы. Все элементы редактируются индивидуально путем нажатия по их заголовку и внесения соответствующих изменений параметров во вновь открывшемся окне. Принцип редактирования везде один и тот же.
6. Первым делом настроим глобальные параметры будущей формы. В панели инструментов справа вверху жмем иконку "Редактировать форму". Параметры формы везде могут задаваться произвольным образом, кроме тех случаев, когда на их ввод не задано определенных ограничений. Я предлагаю воспользоваться следующей последовательностью (значения параметров приведены последовательно через запятую): Контакты, Individual, Contacts. Это то, что касается первых трех, по желанию также можно отредактировать описание формы (последнее поле) - остальные поля пока нас мало интересуют. Жмем "Сохранить".
7. Персонализируем нашу форму, внеся кое-какие изменения в структуру ее элементов. Удалим насовсем заголовок "Contact Form" вверху: в списке используемых элементов напротив заголовка "Title" устанавливаем флажок, а затем в панели инструментов (справа вверху) кликаем по иконке "Удалить" (знакомая схема, от основных принципов администрирования Joomla! CMS ничем не отличается). То же самое проделываем с комментарием (заметкой) - заголовок "Note". Аналогичные операции с элементами можно проделывать для копирования, перемещения и т.п.
8. Итог предыдущего действия - свободное пространство вверху, от которого можно избавиться, сместив все элементы формы к ее верхней границе, или не избавляться, а заполнить вводным текстом. Сдвинем вверх: установив флажки напротив всех элементов формы, переведем курсор к окошку с внешним видом формы. Слева от формы присутствует навигационное меню, в котором можно задать фиксированную величину смещения (в пикселях) и сместить выбранные элементы в нужном направлении. Введем значение 40 и осуществим смещение вверх. Финальный штрих - нажатие кнопки "Сохранить", что расположена несколько ниже. Таким образом разобрались с универсальным инструментом позиционирования элементов форм.
9. Русифицируем текстовые комментарии ("Name:", "Email:", "Your message:" и др.) слева от полей формы, которым соответствует каждый из них. Принцип аналогичен принципу изменения глобальных параметров нашей формы, описанному в пункте 6. То же самое проделываем с параметрами полей формы ("Name", "Email", "Message" и др.). Все предельно просто и понятно.
10. Избавиться от свободного пространства внизу можно, перейдя по ссылке "Редактировать форму" из панели инструментов и уменьшить величину высоты на 40px (т.е. вместо 350 соответствующего поля установить 310). Жмем "Сохранить".

На этом подготовительная часть подошла к своему логическому завершению (Вы можете добавить в форму дополнительные поля и текстовые комментарии, а затем увеличить высоту формы - на все воля Ваша). Переходим к публикации формы на сайте, в "Главном меню" (mainmenu) создадим соответствующий пункт:

1. В административной панели сайта осуществляем переход 'Меню - mainmenu'.
2. Тыкаем по иконке "Новый" в панели инструментов и тем самым создаем новый пункт типа "Компонент".
3. Название: Контакты. Компонент: FacileForms. В панели инструментов жмем "Применить".
4. Переходим к настройке появившихся в окне справа параметров пункта меню. Основное внимание, пожалуй, стоит уделить лишь одному - "Название формы". В это поле необходимо вводить уникальный идентификатор, имя формы, которое мы присваивали нашей форме, когда редактировали ее глобальные настройки (пункт 6). В нашем случае этим названием (именем, идентификатором) является "Contacts".
5. Сохраняем все внесенные изменения. Наша форма готова!

Оригинал статьи


Архив с компонентом, модулем и мамботом от dezzor перед установкой распаковать архив

[вложение удалено Администратором]
« Последнее редактирование: 17.03.2008, 08:56:24 от Fon »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Добавляем CAPTCHA в стандартную форму обратной связи

Автор beliyadm

Ответов: 0
Просмотров: 37965
Последний ответ 18.02.2008, 01:33:45
от beliyadm
Создание шаблона для Joomla! Ссылки на руководства

Автор raduga

Ответов: 0
Просмотров: 52045
Последний ответ 18.06.2006, 22:36:53
от raduga