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

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
Хочется сделать модуль авторизации похожим на модуль яндекса
сейчас такой
 
-------------
надо так

-------------
Всё получилось, кроме пароля. Как сделать, чтобы вместо точек отображалось слово "пароль" как на картинке, при наведении курсора оно исчезало и вводился пароль точками, как обычно
Код переделанного модуля приложу
Спойлер
[свернуть]
« Последнее редактирование: 31.07.2012, 12:24:41 от Alienoff »
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
чтобы вместо точек отображалось слово "пароль" 

Там input имеет type="password"
http://htmlbook.ru/html/input/type
*

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
Я знаю.
Это плейсхолдером делается, нужно просто как-то прикрутить. Вроде в JQuery это стандартно поддерживается
Чел тут наваял код примерный, но куда его совать, как - я не знаю

Код: html4strict
<script>

$(function(){
    $('#password').focus(function(){
if ($(this).attr('value')!= 'Пароль') {
    return;
}
        $(this).attr('type', 'password');
        $(this).attr('value', '');
    });
    $('#password').blur(function(){
        if ($(this).attr('value') == '') {
$(this).attr('type', 'text');
$(this).attr('value', 'Пароль');
        }
    });
});


</script>

<html>

<body>

<input type="text" value="Логин" name="login" id="login" />
<input type="text" value="Пароль" name="password" id="password" />

</body>

</html>
*

denben777

  • Захожу иногда
  • 157
  • 78 / 1
Устанавливаешь модуль mod_jshopping_login -> открываешь файл: твой домен/modules/mod_jshopping_login/tmpl/default.php -> Удаляешь строку 48 с кодом:
Код
<label for="modlgn_passwd"><?php echo JText::_('PASSWORD')?></label><br />
а в 49-ой строке меняешь код:
Код
<input id="modlgn_passwd" type="password" name="passwd" class="inputbox" size="18" alt="password" />
на
Код
<input id="modlgn_passwd" type="text" name="passwd" class="inputbox" size="18" alt="password" value="пароль" onblur="if(this.value=='') this.value='пароль', this.type='text';" onfocus="if(this.value=='пароль') this.value='', this.type='password';" onmouseover="if(this.value=='пароль') this.value='введите свой пароль', this.type='text';" onmouseout="if(this.value=='введите свой пароль') this.value='пароль', this.type='text';";" onmousedown="if(this.value=='пароль') this.value='';" onclick="if(this.value=='введите свой пароль') this.value='', this.type='password';" />
Теперь у тебя будет светится слово "пароль" (как на твоем скриншоте), при наведении мышки на это поле слово "пароль" будет меняться на "введите свой пароль", а при вводе пароля буквы будут меняться на точки. Если понравилось изменение слов при наведении мышки, то можешь сделать так же и для поля логин:
Удаляешь строку 44 с кодом:
Код
<label for="modlgn_username"><?php echo JText::_('USERNAME')?></label><br />
а строку 45-ть с кодом:
Код
<input id="modlgn_username" type="text" name="username" class="inputbox" alt="username" size="18" />
меняешь на (слово e-mail поменяй на логин):
Код
<input id="modlgn_username" type="text" name="username" class="inputbox" alt="username" size="18" value="e-mail" onblur="if(this.value=='') this.value='e-mail';" onfocus="if(this.value=='e-mail') this.value='';" onmouseover="if(this.value=='e-mail') this.value='введите свой e-mail';" onmouseout="if(this.value=='введите свой e-mail') this.value='e-mail';" onmousedown="if(this.value=='e-mail') this.value='';" onclick="if(this.value=='введите свой e-mail') this.value='';"/>

Вот и все. Удачи!
*

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
Спасибо! Знание - сила. Плюсанул
*

jss

  • Осваиваюсь на форуме
  • 36
  • 9 / 0
Когда переходишь с поля login на поле password нажатием tab, то поле password не скрывает введенные символы
если кликаешь мышкой в поле password то все гуд.
как можно это исправить?
*

denben777

  • Захожу иногда
  • 157
  • 78 / 1
Когда переходишь с поля login на поле password нажатием tab, то поле password не скрывает введенные символы
если кликаешь мышкой в поле password то все гуд.
как можно это исправить?
Добавить к onfocus тип "password" - в общем я уже добавил (отредактировал свой ответ выше) - просто скопируй изменения в строке с паролем заново.
*

Mexika

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
попытался реализовать данную фишку в модулеhttp://joomlaforum.ru/index.php/topic,210880.new.html#new, отображает как и требовалось но при вводе логина и пароля пишет Пустой пароль не допускается и перенаправляет на авторизацию Joomla? что исправить. В данном модуле номера строк  отличаються от указаных Вами
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Мы починили поиск для JoomShopping

Автор Dimidrol-Pruper

Ответов: 101
Просмотров: 34590
Последний ответ 24.06.2024, 14:20:58
от kit2m2
[Решено] Адрес e-mail как логин при регистрации

Автор orexov_m

Ответов: 51
Просмотров: 15138
Последний ответ 28.02.2024, 18:34:01
от nevigen
Плагин - Вывод значения поля из таблицы продуктов в корзине JoomShopping

Автор draff

Ответов: 3
Просмотров: 2192
Последний ответ 26.02.2024, 07:00:01
от kit2m2
Плагин - Товар на складе или Товар под заказ для JoomShopping [Скачать]

Автор kit2m2

Ответов: 58
Просмотров: 11702
Последний ответ 18.05.2023, 12:59:00
от Akeksandr
[Решено] - Заказ на одной странице

Автор shurakana

Ответов: 58
Просмотров: 18990
Последний ответ 16.03.2023, 09:53:16
от kit2m2