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

triode-master

  • Захожу иногда
  • 110
  • 14 / 14
BODY {
   margin: 0px 0px 0px 0px;
   background-color : #aed6e4;
   background-image:url(../images/back1.jpg);   background-height=100%;
   background-width=100%;
   background-attachment: fixed;
   background-position: bottom left;
   background-repeat: no-repeat;
   color : #000000;
   scrollbar-3dlight-color: White;
   scrollbar-base-color: #2886BE;
   scrollbar-darkshadow-color: White;
   scrollbar-face-color: #2886BE;
   scrollbar-highlight-color: #2886BE;
   scrollbar-shadow-color: #2886BE;
   scrollbar-track-color: #B7E3FF;
   scrollbar-arrow-color: White;

Вот можноли зделать так чтобы при разном разрешении экрана подгружался разный бекграунд.

Тоесть одна и таже картинка тока с разным размером взависимости от разрешения экрана пользователя
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
а зачем CSS?
разрешение ты как вычисляешь?
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

triode-master

  • Захожу иногда
  • 110
  • 14 / 14
Есть картинка резать и пилить её нельзя, должна быть как есть. ЭТО БЕКГРАУНД
Мне надо чтобы у пользователя с разрешением экрана 800 на 600 она загрузилась в 800 на 600,
а у пользователя с разрешением экрана 1024 на 768 она загрузилась в 1024 на 768 и т.д.

Я решил зделать несколько её копий и при разных разрешениях должна загружаться подходящая по размерам.

Находил решение подгрузки разных css через ява скрипт но яву не знаю и куда чего прописывать в шаблоне непонял.

<script language="JavaScript">

var height=0;var width=0;
if (self.screen) {
// for NN4 and IE4
width = screen.width
height = screen.height
}

if (width<641 && height<481)
{
document.writeln("<link rel=\"stylesheet\"
type=\"text/css\" href=\"640.css\" >")
}

else
{
if (width>1023 && height>767)
{
document.writeln("<link rel=\"stylesheet\"
type=\"text/css\" href=\"1020.css\" >")
}

else
{
document.writeln("<link rel=\"stylesheet\"
type=\"text/css\" href=\"800.css\" >")
}
}

</script>

Вот типа такого
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
ну в общем-то где-то так.
можно было бы просто менять свойство у body не трогая CSS если они в остальном одинаковые.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

triode-master

  • Захожу иногда
  • 110
  • 14 / 14
Куда впихнуть все это дело
Я пробывал в index.php
вместо этого

<style type="text/css">
    @import url(<?php echo $mosConfig_live_site;?>/templates/<?php echo $cur_template; ?>/css/template_css.css);
 </style>


template_css.css - теряется
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
непонял. это чего?
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

triode-master

  • Захожу иногда
  • 110
  • 14 / 14
Содержимое файла index.php шаблона до <body >
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
  defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
  <?php
    if ($my->id) {
      initEditor();
    }
    mosShowHead();
  ?>
 
 <style type="text/css">
    @import url(<?php echo $mosConfig_live_site;?>/templates/<?php echo $cur_template; ?>/css/template_css.css);
 </style>

  <link rel="shortcut icon" href="<?php echo $mosConfig_live_site;?>/<?php echo $mosConfig_favicon; ?>" />
</head>
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
ну вот приведённый <script> вставить вместо <style>
только нужно полностью указать пути к стилям в скрипте
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

Karyuudo

  • Захожу иногда
  • 354
  • 0 / 0
а куда это нужно ставлять в шаблон ja purity? :) чтоб тоже под разное разрешение картинка либо растягивалась, либо просто отображалсь другая шапка с другим разрешением?
*

Karyuudo

  • Захожу иногда
  • 354
  • 0 / 0
о, а у меня идея возникла!
сделать такую шапку, чтобы например при 1024 была одна картинка, а левая половина была невидна.. а при 1280, та левая половина открывается! и тогда не будет этой полосы.. и шапка не уедет, а просто как-бы расширится, появится новые картинки (так про запас до 1920 можно сделать шапку, и при разном разрешении будут видны разные куски, главное чтоб куски эти были ровные, а не обрезались)
*

Darkick

  • Завсегдатай
  • 1142
  • 239 / 1
разрешение экрана не равно размеру клиентского окна браузера
*

poizon

  • Захожу иногда
  • 495
  • 187 / 1
  • Buu
Karyuudo, Вашей идее порядка пары лет сущесвования  ;)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

vertical-align при разной ширине экрана

Автор valexi1980

Ответов: 1
Просмотров: 2010
Последний ответ 05.12.2021, 05:52:51
от effrit
Область компонента в мобильном шире экрана

Автор wishlight

Ответов: 7
Просмотров: 1238
Последний ответ 11.12.2019, 03:58:20
от aztekadv
Свойство letter-spacing по-разному отображается на разных мониторах

Автор V@lentin

Ответов: 1
Просмотров: 1362
Последний ответ 19.07.2018, 20:53:29
от Zelyonkin
При большом разрешении экрана блокируется меню!

Автор NAaTa

Ответов: 6
Просмотров: 1404
Последний ответ 04.08.2016, 19:43:30
от NAaTa
Как растянуть блок на всю высоту страницы, а не экрана?

Автор ВладимирГребень

Ответов: 3
Просмотров: 2956
Последний ответ 12.06.2016, 18:44:09
от AlekVolsk