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

kosty@

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Разбираемся с куки
« : 09.01.2014, 12:22:26 »
Есть кнопка при нажатии делает некое действие. Необходимо сделать так что бы при переходах на разные страницы сохранялось то что она делает.
Для этого скачал скрипт куки, запихал на хостинг, далее в индексе подключил <script type="text/javascript" src="http://ppk54test.esy.es/templates/dd_openmint_25/js/jquery.cookie.js"></script>, прописал
$.cookie('trable', 'all', {
    expires: 5,
    path: '/',
});
далее при просмотре в Chrome в ресурсах там отображается данный куки

а дальше что? не могу вкурить.... надо где то прописать получение куки? или в скрипт кнопке записать на запись куки?
Может быть можно как то по хитрому сделать в скрипте прописать запись куки? только как сделать?
« Последнее редактирование: 09.01.2014, 12:48:02 от kosty@ »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Разбираемся с куки
« Ответ #1 : 09.01.2014, 14:10:54 »
PHP вариант:
Код: php
$value = JFactory::getApplication()->input->cookie->get('trable');
*

kosty@

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Разбираемся с куки
« Ответ #2 : 09.01.2014, 15:14:59 »
я так понял это
<?php
$value = JFactory::getApplication()->input->cookie->get('trable');
?>
надо прописать в кнопку? но увы при обновлении все скидывает(
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Разбираемся с куки
« Ответ #3 : 09.01.2014, 15:43:53 »
Вы кусками не пишите, а нормально изложите, где Вы хотите получить значение куки?
*

kosty@

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Разбираемся с куки
« Ответ #4 : 09.01.2014, 16:06:13 »
значение куки хочу получить после того как нажал на кнопку фон изменился и оставался таким при переходе по страницам.
т.е. так?
Спойлер
[свернуть]
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Разбираемся с куки
« Ответ #5 : 09.01.2014, 16:21:50 »
Тогда там, где хотите вывести значение куки:
Код: php
<?php echo JFactory::getApplication()->input->cookie->get('trable'); ?>
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Разбираемся с куки
« Ответ #6 : 09.01.2014, 17:27:37 »
че то не пойму я, в чем проблема вы сохранили в куки переменную "trable" значение "all" теперь получить его можно так:
Код: javascript
alert($.cookie('trable'));
И я так понимаю нужно именно в javascript  использовать, иначе зачем подключать отдельную jquery библиотеку для  кук.
интернет-блог: http://websiteprog.ru
*

kosty@

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Разбираемся с куки
« Ответ #7 : 09.01.2014, 17:30:33 »
да он выдает значение "all", а как записать чтобы он значение записывал не "all" а действие измененное при нажатии на кнопку?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Разбираемся с куки
« Ответ #8 : 09.01.2014, 17:37:39 »
Я не понимаю что значит действие записать, вы в куки можете сохранять только строки . Если вам нужно значение какой то переменной в куку записать  то в вашей функции
Код: javascript
$.cookie('trable', var, {
expires: 5,
path: '/',
});
вместо var впишите значение вашей переменной
интернет-блог: http://websiteprog.ru
*

kosty@

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Разбираемся с куки
« Ответ #9 : 09.01.2014, 17:40:12 »
хорошо вот сайт http://ppk54test.esy.es/index.php при нажатии на кнопку цвет фона черный а текст белый при переходе все скидываетсо по дэфолту, как сохранить черный фон и белый текст при переходе на др страницу?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Разбираемся с куки
« Ответ #10 : 09.01.2014, 17:52:57 »
Если у вас скрипт на всех страницах подключен то я бы просто сохранил в куку проверочное значение к примеру 'color_is_changed'. тоесть по вашему коду:
Код: javascript
$('#black-b').click(function() {
$.cookie('color', 'color_is_changed', {
expires: 5,
path: '/',
});
})
А затем сделал бы проверку в том же коде например
Код: javascript
if($.cookie('color') == 'color_is_changed')
  //меняем цвет
else
 //не меняем цвет
Вот такая логика
интернет-блог: http://websiteprog.ru
*

kosty@

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Разбираемся с куки
« Ответ #11 : 09.01.2014, 18:12:29 »
блин вообще не понимаю если просто ниже так написать кнопки не работают, если прописать сюда
$('#black-b').click(function() {
$.cookie('color', 'color_is_changed', {
   expires: 5,
   path: '/',
});
})
тож не работает ничего
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Разбираемся с куки
« Ответ #12 : 09.01.2014, 18:21:22 »
Скорее всего у вас скрипт отрабатывает раньше чем dom элемент подгрузиться. Или скрипт внизу страницы разместите или оберните в функцию document.ready() :
Код: javascript
$(document).ready(function(){
$('#black-b').click(function() {
$.cookie('color', 'color_is_changed', {
   expires: 5,
   path: '/',
});
})
})
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Разбираемся с куки
« Ответ #13 : 09.01.2014, 18:36:14 »
А проверка?
А затем сделал бы проверку в том же коде например
Код: javascript
if($.cookie('color') == 'color_is_changed')
  //меняем цвет
$('.dd-nav1').css('backgroundColor', '#000000');
---------------------------------------------
$('.dd-postheader a:hovered, .dd-postheader a.hovered').css('color', '#FFFFFF');//"Название новости"
else
 //не меняем цвет
Вот такая логика
Оптимизируйте код. Что, если хранить стили во внешних файлах и динамически подключать/отключать их по мере необходимости?
« Последнее редактирование: 09.01.2014, 18:53:31 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

К текущему дню недели добавить класс

Автор Gover

Ответов: 5
Просмотров: 1151
Последний ответ 04.09.2016, 23:23:41
от effrit
Отображение результатов запроса в таблич

Автор 68pin

Ответов: 6
Просмотров: 1220
Последний ответ 17.12.2015, 09:41:50
от beliyadm
PageSpeed Insights находит на сайте непонятные страницы

Автор daddy

Ответов: 2
Просмотров: 2944
Последний ответ 14.12.2015, 18:44:47
от AlekVolsk
Не верно отображаеться редирект - ?

Автор warlocksp

Ответов: 0
Просмотров: 1042
Последний ответ 21.07.2015, 16:37:36
от warlocksp
Как прописать JavaScript позицию вывода ?

Автор warlocksp

Ответов: 3
Просмотров: 1360
Последний ответ 04.05.2015, 14:38:43
от warlocksp