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

Вараника

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Найти файл
« : 03.04.2015, 23:58:25 »
Люди, у меня уже едет крыша. Написала плюшку на джейквери, а она не отрабатывает из-за одной строчки, которая подключается на странице. Я трое суток копаю сайт, но не могу понять, где эта с...ь подключается.
Итак, Joomla 1.5.26 и VirtueMart 1.1.9
Я написала код для смены фота товаров при наведении на другое мини-изображение, простое jquery, библиотека к сайту подключена. Использую табы, которые тоже нашла на форуме.

Кто-нибудь, помогите убрать эту часть
Код
jQuery.noConflict();
Из файла
Код
<div id="vmMainPage">

<script type="text/javascript" src="http://site/plugins/content/jquery/jquery.min.js"></script>
<script type="text/javascript" src="http://site/plugins/content/jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="http://site/plugins/content/jquery/jquery-ui.css"></script>
<link rel="stylesheet" href="http://site/plugins/content/jquery/jquery-ui.css" type="text/css" />
<script type="text/javascript">
jQuery.noConflict();
jQuery(function() {
jQuery("#tabs").tabs({
         fx: {
           opacity: 'toggle',
           duration: 200
         }
       });
});
</script>
<script type="text/javascript">
function show_modal(){

document.getElementById('signup').style.display="block";
document.getElementById('lean_overlay').style.display="block";


}
function hide_modal(){

document.getElementById('signup').style.display="none";
document.getElementById('lean_overlay').style.display="none";

}
</script>
<div class='product_table'>


Или помогите найти решение для совместимости. Пыталась по инструкциям из инета настроить совместимость - добилась того, что админка не отображается. Я бы плюнула на скрипт и написала бы все на CSS, да заказчику надо чтоб в одном месте наводить, а в другом менялось и у каждого товара по своему. А на JavaScript из джейквери перевести мне уже мозга не хватает, да и не факт что он отработает. Вот моя плюшка:

Код
$(function() {

var bigphoto = $(".slider_big_photo");

var one_mouse = $("#slider__circle1");
var two_mouse = $("#slider__circle2");
var tree_mouse = $("#slider__circle3");
var four_mouse = $("#slider__circle4");
var five_mouse = $("#slider__circle5");
var six_mouse = $("#slider__circle6");
var seven_mouse = $("#slider__circle7");
var eight_mouse = $("#slider__circle8");

var one = $("#slider_big_photo1");
var two = $("#slider_big_photo2");
var tree = $("#slider_big_photo3");
var four = $("#slider_big_photo4");
var five = $("#slider_big_photo5");
var six = $("#slider_big_photo6");
var seven = $("#slider_big_photo7");
var eight = $("#slider_big_photo8");

function adjustStyle(width) {
    width = parseInt(width);

        one_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); one.addClass('slider_big_photo_active');});
one_mouse.mouseout(function() {bigphoto.removeClass('slider_big_photo_active'); one.addClass('slider_big_photo_active');});

        two_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); two.addClass('slider_big_photo_active');});
two_mouse.mouseout(function() {bigphoto.removeClass('slider_big_photo_active'); two.addClass('slider_big_photo_active');});

   tree_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); tree.addClass('slider_big_photo_active');});
tree_mouse.mouseout(function() {bigphoto.removeClass('slider_big_photo_active'); tree.addClass('slider_big_photo_active');});

        four_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); four.addClass('slider_big_photo_active');});
four_mouse.mouseout(function() {bigphoto.removeClass('slider_big_photo_active'); four.addClass('slider_big_photo_active');});

five_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); five.addClass('slider_big_photo_active');});
five_mouse.mouseout(function() {bigphoto.removeClass('slider_big_photo_active'); five.addClass('slider_big_photo_active');});

        six_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); six.addClass('slider_big_photo_active');});
six_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); six.addClass('slider_big_photo_active');});

   seven_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); seven.addClass('slider_big_photo_active');});
seven_mouse.mouseout(function() {bigphoto.removeClass('slider_big_photo_active'); seven.addClass('slider_big_photo_active');});

        eight_mouse.mouseover(function() {bigphoto.removeClass('slider_big_photo_active'); eight.addClass('slider_big_photo_active');});
eight_mouse.mouseout(function() {bigphoto.removeClass('slider_big_photo_active'); eight.addClass('slider_big_photo_active');});
    }


    adjustStyle($("body").width());
    $(window).resize(function() {
        adjustStyle($("body").width());
    });



});
« Последнее редактирование: 04.04.2015, 00:05:08 от Вараника »
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Re: Найти файл
« Ответ #1 : 04.04.2015, 00:32:05 »
(function($){
var bigphoto = $(".slider_big_photo");
.....

})(jQuery);

*

Вараника

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Найти файл
« Ответ #2 : 04.04.2015, 00:49:20 »
(function($){
var bigphoto = $(".slider_big_photo");
.....


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

})(jQuery);


*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Re: Найти файл
« Ответ #3 : 04.04.2015, 00:53:23 »
Цитировать
<script type="text/javascript" src="http://site/plugins/content/jquery/jquery-ui.css"></script>
это что?
Веб-разработка: заказ. Только новая разработка.
*

Вараника

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Найти файл
« Ответ #4 : 09.04.2015, 10:00:36 »
это что?

Некий подключаемый Joomla набор, я так понимаю, он отвечает за вкладки у товара. Правда, почему подключается по центру страницы - не ясно.
*

Вараника

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Найти файл
« Ответ #5 : 09.04.2015, 10:02:41 »
Я вообще Joomla начала изучать не так давно, но она как-то мою логику вгоняет в стопор. Скажите, как вы понимаете, что именно здесь подключён именно этот модуль и его можно найти в такой-то папке? И простите, что о версии 1.5.26 говорю, ибо обновиться не могу - мне за это не заплатят, сайт не мой, но по голове настучат за ошибки :)
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Re: Найти файл
« Ответ #6 : 09.04.2015, 10:34:46 »
tp=1 подписываете к строке URL в конец и видите позиции шаблона и модули в них
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Re: Найти файл
« Ответ #7 : 09.04.2015, 13:07:36 »
Некий подключаемый Joomla набор
можете этот "некий набор" удалить
Веб-разработка: заказ. Только новая разработка.
*

Вараника

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: Найти файл
« Ответ #8 : 10.04.2015, 00:13:48 »
Не-не. Он странный, но полезный. Помогает с табами и стили в нем есть некоторые)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

как подключить собственный css-файл

Автор crlf

Ответов: 19
Просмотров: 5242
Последний ответ 27.08.2020, 10:13:38
от vasmed
JFolder::create: Невозможно создать каталог Внимание! - Не удалось переместить файл

Автор sayber

Ответов: 30
Просмотров: 67678
Последний ответ 14.07.2017, 12:05:37
от araiguma
Не могу найти где лежат раздел контакты в Joomla

Автор virusvvv

Ответов: 8
Просмотров: 3014
Последний ответ 12.01.2017, 12:50:55
от virusvvv
Mobile Joomla Невозможно скопировать выбранный файл

Автор Elimelech

Ответов: 0
Просмотров: 1827
Последний ответ 20.07.2016, 11:30:05
от Elimelech
!!! Невозможно найти установочный пакет !!!

Автор M0NG0L

Ответов: 12
Просмотров: 28260
Последний ответ 13.06.2016, 04:00:21
от kabban