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

Здравтсвуйте!
Подскажите пожалуйста, как в вводном тексте К2 сделать картинку оптекаемой, а то она по умолчанию находится сверху текста.
Нашел файл отвечающий за вывод вводного текста и картинки, не не понимаю, как праить файл, чтоб получилось то, что мне нужно.
(components/com_k2/templates/default/category_item.php)
Код
 <?php if($this->item->params->get('catItemImage') && !empty($this->item->image)): ?>
 <!-- Item Image -->
 <div class="catItemImageBlock">
 <span class="catItemImage">
   <a href="<?php echo $this->item->link; ?>" title="<?php if(!empty($this->item->image_caption)) echo $this->item->image_caption; else echo $this->item->title; ?>">
    <img src="<?php echo $this->item->image; ?>" alt="<?php if(!empty($this->item->image_caption)) echo $this->item->image_caption; else echo $this->item->title; ?>" style="width:<?php echo $this->item->imageWidth; ?>px; height:auto;" />
   </a>
 </span>
 <div class="clr"></div>
 </div>
 <?php endif; ?>

 <?php if($this->item->params->get('catItemIntroText')): ?>
 <!-- Item introtext -->
 <div class="catItemIntroText">
  <?php echo $this->item->introtext; ?>
 </div>
 <?php endif; ?>


За раннее спасибо.
зы По форуму долго искал, подобного топика так и не нашел.


***

Ну вот спросил и сам ответил )))

Код
 <?php if($this->item->params->get('catItemImage') && !empty($this->item->image)): ?>
  <!-- Item Image -->
  <span class="catItemImage">
    <a href="<?php echo $this->item->link; ?>" title="<?php if(!empty($this->item->image_caption)) echo $this->item->image_caption; else echo $this->item->title; ?>">
    <img src="<?php echo $this->item->image; ?>" align="right"; alt="<?php if(!empty($this->item->image_caption)) echo $this->item->image_caption; else echo $this->item->title; ?>" style="width:<?php echo $this->item->imageWidth; ?>px; height:auto;" />
    </a>
  </span>


  <?php endif; ?>

  <?php if($this->item->params->get('catItemIntroText')): ?>
  <!-- Item introtext -->
  <?php echo $this->item->introtext; ?>
  <?php endif; ?>
« Последнее редактирование: 06.11.2011, 21:45:51 от jay_b »
*

HYBRID

  • Захожу иногда
  • 228
  • 47 / 0
  • Они захватят мир
Приписал к тегу img align="right" при этом прибив один div, и чего? Хоть картинка и прилипла к правому краю, но обтекаемой не стала, верно?
А все потому что нужно учить CSS.
Достаточно добавить блоку свойство float и все будет как надо.
Код
.catItemImageBlock{float:right;}
http://hybrid-lab.com - лаборатория
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
ой а как етот стиль найти)))) файл там ссылку дает ахиенеевскую)

путь дает http://plugins/system/ice_speed/?f=11032c1d97811fbbc83e179f9a93bc6e.css  таква файла стилей нет! ))))) Я в истерике аааааа)))
« Последнее редактирование: 01.02.2012, 20:20:19 от terr »
*

HYBRID

  • Захожу иногда
  • 228
  • 47 / 0
  • Они захватят мир
выруби плагин ice speed и тогда все станет яснее
http://hybrid-lab.com - лаборатория
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
оке а если плагин включить то уноследовать оно не будет от файла стиля, ибо я там менял стили а эффекта было 0))) ща затестим, буду знать теперь как такие касяки в верстке исправлять))))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как заменить заглушку изображения в к2?

Автор sergspb

Ответов: 0
Просмотров: 2807
Последний ответ 13.10.2022, 14:21:02
от sergspb
Изображения в K2

Автор portos

Ответов: 68
Просмотров: 31604
Последний ответ 10.12.2020, 00:45:57
от Divn
Можно ли безболезненно добавить загрузку еще одной миниатюры, изображения?

Автор designerandrey

Ответов: 0
Просмотров: 1546
Последний ответ 16.04.2019, 20:22:13
от designerandrey
Всплывающее окно изображения в материале

Автор Дмитрий 1989

Ответов: 6
Просмотров: 1918
Последний ответ 12.03.2018, 21:20:55
от Дмитрий 1989
Интегрировать в k2store вывод 3 d изображения в фотографии товара

Автор denia85

Ответов: 2
Просмотров: 1296
Последний ответ 15.11.2017, 14:30:44
от denia85