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

Solvedor

  • Захожу иногда
  • 376
  • 33 / 0
  • Масенький Йожик
Здравствуйте!
Только пытаюсь писать шаблоны div'ами. Но пока получается нечто среднее.
Начал делать сайт и обнаружилась проблема с выводом контента на главной <jdoc:include type="component" style="xhtml" /> : во первых, публикации выводятся в 2 колонки, а нужно в одну; во-вторых все это дело уезжает вправо. Параметр overflow в цсске обрезает, конечно все лишнее...
Но вот как сделать так, чтобы этот компонент отображался корректно?? помогите, плиз  !!!???!!!

Код страницы

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />

<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/zags/css/template.css" type="text/css" />
</head>

<body>
<!--øàïêà-->
 <table align="center" cellspacing="0" cellpadding="0">
  <tr>
   <td>
    <img src="templates/zags/images/header.jpg">
   </td>
  </tr>
<!--âåðõíåå ìåíþ-->
  <tr>
   <td id="topmenu">
    <?php if($this->countModules('topmenu')) : ?>
     <jdoc:include type="modules" name="topmenu" />
    <?php endif; ?>
   </td>
  </tr>
 </table>
 
 <table align="center" cellspacing="0" cellpadding="0" background="templates/zags/images/bg.gif">
  <tr valign="top" id="wrapper">
<!--ëåâàÿ êîëîíêà-->
   <td id="leftcolumn">
    <?php if($this->countModules('left')) : ?>
     <jdoc:include type="modules" name="left" style="xhtml" />
    <?php endif; ?>
   </td>
<!--îñíîâíàÿ êîëîíêà-->
   <td id="maincolumn">
    <?php if($this->countModules('maintext')) : ?>
     <jdoc:include type="modules" name="maintext" style="xhtml" />
    <?php endif; ?>
     <div id="content">
      <jdoc:include type="component" style="xhtml" />
     </div>
   </td>
    </tr>
 </table>


</body>
</html>

и css

/* CSS Document */

body {
   font-family: Helvetica,Arial,sans-serif;
   line-height: 1.3em;
   margin: 0px 0px 0px 0px;
   font-size: 12px;
   color: #333;
   background:url(../images/base-bg.gif); margin-top:0px;
}
table {
  border-collapse:collapse;
  border:0px;
  width:900px;
  vertical-align:top;
}

/*________________________________________TOPMENU_____________________________________*/
#topmenu {
  height:30px;
  background:url(../images/topmenu.gif) repeat-x 0 0
}
ul#mainlevel {
  padding:6px 0px 0px 0px;
}
ul#mainlevel li   {
  display:block;
  float:left;
}
a.mainlevel {
  color:#ffffff;
  font-weight:bold;
  font-family:Arial;
  font-size:13px;
  text-decoration:none;
  background:url(../images/topm_sep.png) no-repeat right center;
  margin:0px 0px 0px 0px;
  padding:0px 29px 0px 10px;
}
a.mainlevel:visited   {
  color:#ffffff;
  text-decoration:none;
}
a.mainlevel:hover, #active_menu   {
  color:#fff200;
  text-decoration:underline;
}

#leftcolumn {
   padding-left: 10px;
  padding-right: 10px;
   width: 300px;
   float:left;
}

#maincolumn {
   margin: 0;
   padding: 0px;
   width: 600px;
}

div#content {
   height: 100%;
   width: 500px;
   padding-left: 10px;
   padding-right: 10px;
   padding-top: 30px;
     text-align: left;
}



[вложение удалено Администратором]
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Solvedor

  • Захожу иногда
  • 376
  • 33 / 0
  • Масенький Йожик
Joomla FAQ - Количество новостей и колонок на Главной странице и для типа БЛОГ

Спасибо, с этим я уже разобрался. Просто кэш в ФФ почистил и все. А вот проблема с вылетом за границы осталась :(
*

synoptik

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Тоже маленький трабл с этим шаблоном... Не могу найти никак решение проблемы.
Содержимое страниц сдвигается влево. Причем везде стоит тэг <center> - не помогает.
Такое ощущение, что он центрирует текст вот по этому блоку:

пробовал убирать <center> - всё одно...
Подскажите, как пофиксить?
сайт тут: www.opencam.ru
« Последнее редактирование: 16.03.2009, 08:21:27 от synoptik »
*

Solvedor

  • Захожу иногда
  • 376
  • 33 / 0
  • Масенький Йожик
В общем решение нашел. Пришлось конкретно перелопатить css. там и margin надо было прописывать, и padding и много чего еще
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

шаблон IT Newsy - By IceTheme проблема со списком.

Автор wolf34

Ответов: 4
Просмотров: 6038
Последний ответ 30.05.2017, 11:52:27
от darkghost
Проблема с изменением логотипа штатного шаблона rhuk_milkyway Joomla_1.5

Автор Porohok

Ответов: 6
Просмотров: 4866
Последний ответ 22.03.2017, 10:34:23
от Porohok
Проблема отображения контента при масштабировании окна браузера

Автор Свят

Ответов: 2
Просмотров: 2262
Последний ответ 10.02.2016, 15:14:24
от Свят
Условие для <jdoc:include type="message" />

Автор ws_green

Ответов: 5
Просмотров: 8631
Последний ответ 09.01.2015, 22:07:31
от shurikkan
Шаблон yoo spark проблема с отображением логотипа

Автор ymaiorov

Ответов: 2
Просмотров: 2747
Последний ответ 25.05.2014, 01:50:11
от eprofit