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

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Здравствуйте, у меня сместился Header после переноса на хостинг, красным цветом нарисовал где именно, как это исправить?






Пытался менять значения, никаких изменений, на локалхосте и на IE и на Firefox нормально отображалось, а на хостинге вот так все сместилось...

/*-------------------------------------header---*/
.tail-header{ background:url(../images/tail_header.gif) 0 0 repeat-x; height:220px;}
.row-header{ height:1px;  background:url(../images/header_bg_top.jpg) top right no-repeat;}
.row-logo{ height:204px; background:url(../images/header_bg_bottom.jpg) top right no-repeat;}
.row-logo h1{ display:block; position:absolute; margin:60px 0 0 527px;}
.row-logo h1 a{ display:block; width:675px; height:80px; background:url(../images/logo.gif) 0 0 repeat-x;}
.tail-top-menu{ background:#fff; height:53px;}
.top-menu .fright{ width:237px; height:53px; background:url(../images/search_bg.gif) 0 14px no-repeat;}
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
актуально, + еще проблема в том что на моей разрешение 1280х1240 - шапка норм по всей ширине экрана, а на другом более широком шапка не расстягивается и получается белый пропуск слева, как это исправить? в строке писал width:100%;   -ничего не изменилось вообще :(
 .row-logo{ height:204px; background:url(../images/header_bg_bottom.jpg) top right no-repeat; width:100%;}
*

Nextdrift

  • Захожу иногда
  • 55
  • 1 / 0
  • Всему можно научиться.
Как так сместился при переносе? Это не шкаф у которого мог открутиться болт при переносе....
Ты во всех браузерах проверял?
*

Nextdrift

  • Захожу иногда
  • 55
  • 1 / 0
  • Всему можно научиться.
.row-logo{ height:204px; background:url(../images/header_bg_bottom.jpg) top right no-repeat; width:100%;}
ты чтоли лого пытаешься растянуть? Скинь адрес сайта в личку или тут выложи
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
вообще хочу растянуть шапку) но хз толи я делаю, на компе это норм растягивало...

сайт вот , выложил вчера чтоб нормально делать.... http://best-shara.net/
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
проверял на IE и на Firefox, на обоих одинаковое смещение, врубил сайт на ноуте, там др разрешение - еще и слева сместилась шапка (отступ сантиметра 1.5)  вообще по идее шапка должна растягиваться на весь экран
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
вот весь код моего headera

/*-------------------------------------header---*/
.tail-header{ background:url(../images/tail_header.gif) 0 0 repeat-x; height:220px;}
.row-header{ height:1px;  background:url(../images/header_bg_top.jpg) top right no-repeat;}
.row-logo{ height:204px; background:url(../images/header_bg_bottom.jpg) top right no-repeat; }
.row-logo h1{ display:block; position:absolute; margin:60px 0 0 527px;}
.row-logo h1 a{ display:block; width:675px; height:80px; background:url(../images/logo.gif) 0 0 repeat-x;}
.tail-top-menu{ background:#fff; height:53px;}
.top-menu .fright{ width:237px; height:53px; background:url(../images/search_bg.gif) 0 14px no-repeat;}

.row-header .fright{ width:232px; }
.row-header .fright .moduletable{color:#fff; padding-top:19px; font-size:12px;}



.tail-content{background:#f89e44 url(../images/tail_content.gif) 0 0 repeat-x;}
*

hikaram

  • Осваиваюсь на форуме
  • 21
  • 5 / 0
  • sabachka
пишешь такое .row-logo{ height:204px; background:url(../images/header_bg_bottom.jpg) top left no-repeat; width:100%;}
а на класс .header ставишь бекграунд однопиксельный - отсюда справа вырезать надо /images/header_bg_bottom.jpg
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
вроде сделал
/*-------------------------------------header---*/
.tail-header{ background:url(../images/tail_header.gif) 0 0 repeat-x; height:220px;}
.row-header{ height:1px;  background:url(../images/header_bg_top.jpg) top right no-repeat;}
.row-logo{ height:204px; background:url(../images/header_bg_bottom.jpg) top left no-repeat; width:100%;}
.row-logo h1{ display:block; position:absolute; margin:60px 0 0 527px;}
.row-logo h1 a{ display:block; width:675px; height:80px; background:url(../images/logo.gif) 0 0 repeat-x;}
.tail-top-menu{ background:#fff; height:53px;}
.top-menu .fright{ width:237px; height:53px; background:url(../images/search_bg.gif) 0 14px no-repeat;}

.row-header .fright{ width:232px; }
.row-header .fright .moduletable{color:#fff; padding-top:19px; font-size:12px;}



.tail-content{background:#f89e44 url(../images/tail_content.gif) 0 0 repeat-x;}



и в фотошопе создал 1х1 px изобр. закрасил черным, сохранил под именем header_bg_top.jpg , теперь шапка переехала к левому краю, а с правого появился такой же пробел) и сверху отступ остался  , посмотрите на сайте
*

Nextdrift

  • Захожу иногда
  • 55
  • 1 / 0
  • Всему можно научиться.
а если не охота резать картинку, то припиши
.row-logo{ height:204px; background:url("../images/header_bg_bottom.jpg") repeat scroll left top transparent }
плохо что картинка цельная.
А так картинка просто повториться, создаться эффект что она продолжается. Можно менмного на фотошопе(гимпе) подшаманить, чтобы переход был мягким и гуд.
Но я бы сделал лучше по совету перед моим который
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
добавил эту строку , теперь растянулся, а допустим я его разрежу пополам, как мне реализовать 2части  хэдера? если не сложно, оставьте свою ICQ , я после работы напишу Вам, проконсультируюсь))
*

hikaram

  • Осваиваюсь на форуме
  • 21
  • 5 / 0
  • sabachka
это в цсс напиши .header {background:#000;}
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
это в цсс напиши .header {background:#000;}
прописал, изменений нет)
*

Nextdrift

  • Захожу иногда
  • 55
  • 1 / 0
  • Всему можно научиться.
добавил эту строку , теперь растянулся
он не растянулся, а просто продолжился. Картинку делить пополам не надо, достаточно кусочек справа пикселей 10 ширины и полной высоты. Затем делаешь его как фон для хедера. Или же создаешь новый класс и для него
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
дак допустим я это сделаю, а сверху то как убрать отступ) или может у кого есть похожий шаблон чтоб были модули сверху, левая/правая колонка, и снизу 2+ , а то скока не мучаюсь с этим шаблоном, вечно какие-то бока выходят
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
*

hikaram

  • Осваиваюсь на форуме
  • 21
  • 5 / 0
  • sabachka
если потерпиш до вечера дома погляжу нормально
а так маргином миносовым подними)
.tail-header {
margin-top:-16px;
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
уау) ты Гений, помогло, спасибище громадное!!
*

hikaram

  • Осваиваюсь на форуме
  • 21
  • 5 / 0
  • sabachka
Да не за что)
думаю какнибуть отблагодаршиь ;)
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
обязательно) а вот теперь пытаюсь сделать еще фигню, чтоб картинка продолжалась, отрезал правый кусок пикселов на 10, а что надо прописать чтоб оно справа встало и норм отображалось) я сделал вот так :
.row-logo{ height:204px; background:url("../images/header_bg_bottom.jpg") repeat scroll left top transparent }
.row-logo{ height:204px; background:url("../images/header_bg_bottom2.jpg")  }


оно заменило часть первого изобр
*

hikaram

  • Осваиваюсь на форуме
  • 21
  • 5 / 0
  • sabachka
header_bg_bottom2.jpg если это правый кусок то
.row-logo{ height:204px; background:url("../images/header_bg_bottom.jpg") no-repeat scroll left top transparent }
.header  {
background:url("../images/header_bg_bottom2.jpg") repeat scroll 0 0 transparent;
}
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
чего-т не получилось, справа появился черный фон , картинку залил , темплейт заменил, вот весь код


/*-------------------------------------header---*/
.tail-header{ background:url(../images/tail_header.gif) 0 0 repeat-x; height:220px;}
.row-header{ height:1px;  background:url(../images/header_bg_top.jpg) top right no-repeat;}

.row-logo{ height:204px; background:url("../images/header_bg_bottom.jpg") no-repeat scroll left top transparent }
.header  {background:url("../images/header_bg_bottom2.jpg") repeat scroll 0 0 transparent;}
.row-logo h1{ display:block; position:absolute; margin:60px 0 0 527px;}
.row-logo h1 a{ display:block; width:675px; height:80px; background:url(../images/logo.gif) 0 0 repeat-x;}
.tail-top-menu{ background:#fff; height:53px;}
.top-menu .fright{ width:237px; height:53px; background:url(../images/search_bg.gif) 0 14px no-repeat;}

.tail-header {
margin-top:-16px;}
.header {background:#000;}
.row-header .fright{ width:232px; }
.row-header .fright .moduletable{color:#fff; padding-top:19px; font-size:12px;}
*

Xa0z

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
после долгих мучений с этим шаблоном , решил сменить на другой, но в нем тоже загвоздка, хочу сделать так же пошире все как и на прошлом, но чет найти не могу... и вводил старый код

.main {
   width:100%;
   position:relative;
}


никаких изменений (

шаблон прицепил ниже, может найдете в чем причина

[вложение удалено Администратором]
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться