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

imfire

  • Новичок
  • 5
  • 0 / 0
Плавный переход картинок
« : 14.07.2010, 17:50:59 »
Здравствуйте. Мне нужно, чтобы в хэдере правая половина каждые н секунд менялась (всего три варианта). Сначала пробовал сделать это при помощи компонентов и модулей, но забил, т.к. или платный, или не работает, или еще какая проблема.
Далее пробовал решить вопрос средствами javascript. Нашел нужный скрипт, сделал под себя. Если запускать отдельным файлом этот скрипт - все идеально работает. Как только пытаюсь внедрить в шаблон - не работает. Пробовал по разному - никак.
Люди добрые, помогите плз.
Скрипт замены картинки:
Код
<html>
 
<script language=javaScript>
<!-- Beginning of JavaScript -
 
sandra0 = new Image();
sandra0.src = "1.png";
 
sandra1 = new Image();
sandra1.src = "2.png";
 
sandra2 = new Image();
sandra2.src = "3.png";
 
var i_strngth=(document.getElementById)?0:1;
var i_image=0
 
var imageurl = new Array()
imageurl[0] ="1.png"
imageurl[1] ="2.png"
imageurl[2] ="3.png"
 
 
function showimage() {       
    if(document.all) {
        if (i_strngth <=110) {
            testimage.innerHTML="<img style='filter:alpha(opacity="+i_strngth+")' src="+imageurl[i_image]+" border=0>";
            i_strngth=i_strngth+10
            var timer=setTimeout("showimage()",40)//скорость появления для ие
        }   
        else {
            clearTimeout(timer)
            var timer=setTimeout("hideimage()",3000)//сколько висит для ИЕ
        }
    }   
    if (document.getElementById&&!document.all)
    {
   
            if (i_strngth <1) {
            //alert(i_strngth)
            testimage.innerHTML="<img style='opacity:"+i_strngth+"' src="+imageurl[i_image]+" border=0>";
            i_strngth=i_strngth+0.1
            var timer=setTimeout("showimage()",50)//скорость появления
        }   
        else {
       
            clearTimeout(timer)
            var timer=setTimeout("hideimage()",3000)//сколько держится на экране
        }
    }
   
    if(document.layers) {
            clearTimeout(timer)
            document.testimage.document.write("<img src="+imageurl[i_image]+" border=0>")
            document.close()
            i_image++
            if (i_image >= imageurl.length) {i_image=0}   
            var timer=setTimeout("showimage()",1000)
               
    }
           
}
 
 
function hideimage() {       
    if (document.all&&i_strngth >=-10) {
        testimage.innerHTML="<img style='filter:alpha(opacity="+i_strngth+")' src="+imageurl[i_image]+" border=0>";
        i_strngth=i_strngth-10
        var timer=setTimeout("hideimage()",40)//скорость исчезания для ИЕ
    }
        else if(document.getElementById&&!document.all&&i_strngth>0.1)
        {
                     
      testimage.innerHTML="<img style='opacity:"+i_strngth+"' src="+imageurl[i_image]+" border=0>";
        i_strngth=i_strngth-0.1;
        var timer=setTimeout("hideimage()",50)//скорость исчезания
        }   
    else {
   
        clearTimeout(timer)
        i_image++
        if (i_image >= imageurl.length) {i_image=0}
        i_strngth=(document.getElementById)?0:1;
        if (document.getElementById&&!document.all)
        showimage();
        else
        var timer=setTimeout("showimage()",0)//сколько времени пусто для ИЕ
       
    }
}
 
// - End of JavaScript - -->
</script>
<body onLoad="showimage()">
 
<div id="testimage"></div>

</body>
</html>

Почему при вставке в шаблон не работает?

PS Есть еще идея - на месте изменяющейся части в шаблоне поставить место для модуля и при помощи модуля "произвольный HTML текст" запихнуть туда этот код. Но так тоже не работает.
Заранее огромное спасибо.
*

dinox

  • Захожу иногда
  • 235
  • 42 / 0
  • Чего-то здесь не хватает...
Re: Плавный переход картинок
« Ответ #1 : 14.07.2010, 17:59:02 »
А тебе подойдет вот такая штука? http://www.rockettheme.com/extensions-joomla/rokslideshow ее можно вставить себе и там несколько вариантов перехода картинок. Изображения просто в кидаешь в папочку и все ::)
Дай каждому дню шанс стать самым прекрасным в твоей жизни!
Ждем когда microsoft.com перейдет на Joomla!
*

Ptolemej

  • Захожу иногда
  • 52
  • 6 / 0
Re: Плавный переход картинок
« Ответ #2 : 14.07.2010, 17:59:31 »
Первый вопрос, что пришёл в голову.

Где лежат картинки 1.png, 2.png и 3.png?
В папке Вашего темплея?

Попробуйте прописать абсолютный путь к этим картинкам от корневой папки Вашего хоста.
*

tbhost

  • Захожу иногда
  • 158
  • 10 / 6
Re: Плавный переход картинок
« Ответ #3 : 14.07.2010, 18:03:30 »
А тебе подойдет вот такая штука? http://www.rockettheme.com/extensions-joomla/rokslideshow ее можно вставить себе и там несколько вариантов перехода картинок. Изображения просто в кидаешь в папочку и все ::)
хороший модуль, кроме как кроме как переходы разные, еще эффекты приближения фото или удаления, не помню, но кажется еще и скорость менять можно...
*

imfire

  • Новичок
  • 5
  • 0 / 0
Re: Плавный переход картинок
« Ответ #4 : 14.07.2010, 18:20:36 »
Dinox, огромное спасибо. Модуль замечательный. Жалко, что раньше его не нашел.
Вот только он работает везде, кроме ИЕ, в котором вместо эффекта перехода что-то страшное...
*

imfire

  • Новичок
  • 5
  • 0 / 0
Re: Плавный переход картинок
« Ответ #5 : 14.07.2010, 18:26:28 »
можно как-нибудь сделать исключение для ИЕ, чтоб пользователям осла показывало статическую картинку?
*

dinox

  • Захожу иногда
  • 235
  • 42 / 0
  • Чего-то здесь не хватает...
Re: Плавный переход картинок
« Ответ #6 : 14.07.2010, 18:43:15 »
Воспользоватся вот этим для теории и туда вставить блоки для ИЕ и в случае если не то позиция модуля для слайдшоу;)
Дай каждому дню шанс стать самым прекрасным в твоей жизни!
Ждем когда microsoft.com перейдет на Joomla!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плавный якорь из меню на Jquery

Автор Timerlan

Ответов: 19
Просмотров: 3382
Последний ответ 04.02.2016, 03:54:16
от Fedor Vlasenko
ul li и привязка к ним картинок вместо слов

Автор TsMax

Ответов: 2
Просмотров: 2280
Последний ответ 25.03.2013, 00:58:44
от TsMax
Вставить вывод картинок в определенное место

Автор antbert

Ответов: 4
Просмотров: 2618
Последний ответ 03.12.2012, 16:29:57
от Equilibrium07
Не отображается положение картинок и проч

Автор Jomel

Ответов: 3
Просмотров: 1718
Последний ответ 27.11.2012, 17:52:35
от Jomel
Как сделать свой шаблон катигории в виде "ячеистых" картинок-ссылок? (медиа-портал)

Автор RenatAzrael

Ответов: 1
Просмотров: 2046
Последний ответ 22.08.2011, 07:29:22
от dynamit