Новости 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 Ответов
  • 2458 Просмотров
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
Никак не могу понять. Вообщем была высота синей шапки меню (на рисунке видно), я ее сузил (сузил картинку) и выровнял надписи (заголовки меню) в CSS. Высоту синей шапки меню я изменил, но вот осталась первоначальная высота белой шапки меню, ее надо подогнать под высоту синей шапки меню. Пробовал удалять все картинки из шаблона-но белая шапка меню все равно осталась такой же, т.е. это надо смотреть в каком-то CSS файле шаблона. В firebuge смотрел-там тока одно значение высоты меняется для белой шапки меню, я его менял-но ничего не происходит-высота белой шапки меню остается прежней. А мне очень надо подогнать ее под высоту синей шапки меню. Уж не знаю в каком еще CSS файле копать. Вот рисунок, чтобы понятнее было:

Помогите пожалуйста! Буду очень благодарен.
« Последнее редактирование: 22.05.2010, 12:22:16 от THE KILLERS »
*

PashkaRu

  • Давно я тут
  • 941
  • 91 / 4
  • Дедушка Игнат, изыди ((((
ширина или высота?

<----> - это ширина
 /\
 |
 |
 |
 \/
а это высота.

ну и как можно чем-то помочь, если не видеть в глаза стили?

смотри паддинги и маргины. скорее всего у тега UL, или дива, в который он включен.
+
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
Ой, конечно же ВЫСОТА. Че то я совсем попутал.
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
смотри паддинги и маргины. скорее всего у тега UL, или дива, в который он включен.
в firebuge выдало тока один падинг, и то для шрифта(
при наводке на на всю высоту шапки меню в firebuge выдало вот это:
Код
div.mod-menu-box span.header-3 {
height:37px; <----------менял это значение, но не помогло.
}
modules.css (строка 362)
div.mod-box-header span.header-3 {
height:45px;
line-height:23px;
overflow:hidden;
padding-left:10px;
}
modules.css (строка 241)
.module span.header-2, .module span.header-3 {
display:block;
}
modules.css (строка 15)
Унаследовано отh3.header
div.mod-box-header h3.header {
color:#FFFFFF;
font-size:15px;
text-shadow:0 -1px 0 rgba(0, 0, 0, 0.3);
}
modules.css (строка 227)
div.mod-box h3.header {
line-height:35px;
}
modules.css (строка 211)
.module h3.header {
color:#323232;
font-size:16px;
font-weight:normal;
}
modules.css (строка 7)
h1, #page h1 a, h3, h5, .contentheading, .componentheading {
color:#FF7900;
}
blueorange.css (строка 13)
h3 {
color:#417CAB;
}
typography.css (строка 23)
h1, h2, h3, h4, h5, h6 {
font-family:Arial,Helvetica,sans-serif;
}
typography.css (строка 7)
h3 {
font-size:18px;
line-height:18px;
}
reset.css (строка 118)
h1, h2, h3, h4, h5, h6 {
font-weight:normal;
}
reset.css (строка 111)
Унаследовано отbody#page.yoopage
body {
color:#323232;
font-family:Arial,Helvetica,sans-serif;
font-size:12px;
line-height:150%;
}
layout.css (строка 5)
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
Вообщем как я понял менять надо здесь, вот тока где на что менять пока непонятно:
Код
/* header: blue */
div.mod-box-header h3.header {
position: absolute;
top: 4px;
left: 5px;
right: 5px;
z-index: 1;
height: auto;
margin-top: 0px;
background: url(../images/module_box_corners.png) 0 -102px repeat-x;
font-size: 15px;
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
}

div.mod-box-header span.header-3 {
height: 45px;
padding-left: 10px;
line-height: 23px;
overflow: hidden;
}

div.mod-box-header div.with-header { padding-top: 40px; }
« Последнее редактирование: 22.05.2010, 13:04:47 от THE KILLERS »
*

PashkaRu

  • Давно я тут
  • 941
  • 91 / 4
  • Дедушка Игнат, изыди ((((
наведи мышь на пункт меню. вот непосредственно текст пункта меню - это какой именно тег и класс?

паддинг-топ: 40 - это что? откуда такой большой отступ сверху? от какого до какого элемента?
+
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
Насчет паддинг-топ: 40-хз че это, я его менял, но ниче не меняется.
Навел на пункт меню, выдало такой код:
Код
div.mod-box ul.menu li.parent a.active.level1 span.bg, div.mod-box ul.menu li.parent span.active.level1 span.bg {
background-position:100% -60px;
}
menus.css (строка 363)
div.mod-box ul.menu li.parent a.level1 span.bg, div.mod-box ul.menu li.parent span.level1 span.bg {
background-image:url("../../images/variations/blueorange/submenu_level1_parent.png");
}
blueorange.css (строка 49)
div.mod-box ul.menu li.parent a.level1 span.bg, div.mod-box ul.menu li.parent span.level1 span.bg {
background:url("../images/submenu_level1_parent.png") no-repeat scroll 100% 0 transparent;
}
menus.css (строка 357)
div.mod-box ul.menu a.current span.bg {
font-weight:bold;
}
menus.css (строка 344)
div.mod-box ul.menu span.bg {
color:#323232;
height:30px;
line-height:30px;
text-indent:10px;
text-shadow:0 1px 0 #FFFFFF;
}
menus.css (строка 335)
Унаследовано отa.level1 /obzory-...-windows
a:link, a:visited {
text-decoration:none;
}
reset.css (строка 44)
a {
color:#417CAB;
}
blueorange.css (строка 20)
a {
color:#417CAB;
}
typography.css (строка 32)
Унаследовано отbody#page.yoopage
body {
color:#323232;
font-family:Arial,Helvetica,sans-serif;
font-size:12px;
line-height:150%;
}
layout.css (строка 5)
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
короче щас буду тупо менять все значения-может это вообще не в этом файле делать надо
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
Ес, я сделал. Оказывается надо было поменять значения в2х местах (метод тыка помог):
Код
/* header: blue */
div.mod-box-header h3.header {
position: absolute;
top: 4px;
left: 5px;
right: 5px;
z-index: 1;
height: auto;
margin-top: 0px;
background: url(../images/module_box_corners.png) 0 -102px repeat-x;
font-size: 15px;
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
}

div.mod-box-header span.header-3 {
height: 45px;       <------------ тут я поменял на 29px
padding-left: 10px;
line-height: 23px;
overflow: hidden;
}

div.mod-box-header div.with-header { padding-top: 40px; }   <------------ тут  поменял на 24px
все стало идеально.
*

PashkaRu

  • Давно я тут
  • 941
  • 91 / 4
  • Дедушка Игнат, изыди ((((
не, че-то не то : )...

скинь шаблон на почту, гляну у себя (прямо в том виде, какой он щас, т.е. запакуй папку с уже правленным шаблоном)

почта - pashka собака дальше мой ник с точкой сам знаешь где : ))
+
*

PashkaRu

  • Давно я тут
  • 941
  • 91 / 4
  • Дедушка Игнат, изыди ((((
ну и хорошо : )
+
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
PashkaRu, так тебе шаблон скидывать или не надо?) так-то я сделал с ним что хотел) можно заценить http://wshp.ru/)
*

PashkaRu

  • Давно я тут
  • 941
  • 91 / 4
  • Дедушка Игнат, изыди ((((
посмотрел. а модуль менюшки в таблицах ты сам сделал что ли? нафига?
+
*

THE KILLERS

  • Давно я тут
  • 932
  • 28 / 0
посмотрел. а модуль менюшки в таблицах ты сам сделал что ли? нафига?
это ты про 3 левых верхних меню? Если про них, то я просто делал чтоб для сапы было больше ссылок 2го уровня)) Это модуль аккордеон меню от ютем. А как лучше с точки зрения юзабилити? Убрать их нафиг и сделать стандартное меню без jqwery или как?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Помогите установить шаблон...

Автор shurik920

Ответов: 20
Просмотров: 6436
Последний ответ 12.04.2016, 14:09:55
от WEBBY Master
проблемы с шаблоном

Автор CrazyCat

Ответов: 6
Просмотров: 2572
Последний ответ 10.10.2014, 11:37:33
от MALECKY
Проблемы с шаблоном jv_news_ii

Автор gorodok

Ответов: 1
Просмотров: 2251
Последний ответ 25.11.2013, 01:59:03
от gorodok
Проблема с шаблоном после восстановления из backup'a

Автор dabrowski

Ответов: 12
Просмотров: 2478
Последний ответ 01.07.2013, 15:47:25
от Entombed
Проблема с шаблоном сайта и материалами

Автор Fragmatic

Ответов: 4
Просмотров: 2018
Последний ответ 29.05.2013, 18:21:59
от darkghost