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

Zenich

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Здравствуйте, для создания шаблонов я использую Artisteer.3 всё вроде хорошо только таблицы не центруются в этих шаблонах, вот пример:



в настройках плагина (редактора) CSS шаблона отключал не помогло, меняю шаблон на стандартный сразу всё в порядке
подскажите что нужно поправить в коде этих шаблонов
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Шаблон Artisteer, проблема c таблицами
« Ответ #1 : 15.08.2011, 12:07:42 »
если лень ковыряться в коде (особенно Artisteer-a), я обычно внаглую прописываю
Код
<center><table бла-бла-бла...></center>
Хотя это и не есть хорошо. Поищи FireBug-ом, где идёт выравнивание. Или поставь её (таблицу) в SPAN и жёстко отцентруй стилем.
*

Zenich

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Re: Шаблон Artisteer, проблема c таблицами
« Ответ #2 : 15.08.2011, 22:53:10 »
я в коде не очень, но научиться всегда за,направьте на путь истинный,  мне нужно чтоб была возможность центровать как в нормальных шаблонах, это наверняка где-то задаётся в коде шаблона,  другие шаблоны сравнивал но так и не понял что отвечает за возможности таблицы, эта проблема мучает меня с весны я пытался её не касаться выкручивался как мог (растягивал таблицу на 100% центровал её наполнение), но это не всегда  подходит.
FireBug-ом смотрел напротив таблиц стоит вроде правильный код, но отображается таблица неправильно
(<table cellspacing="1" cellpadding="1" border="0" align="center" style="height: 300px; width: 200px;">
<tbody>
<tr>
<td style="background-color: #000000;" class="caption"></td>
<td></td>
</tr>
<tr>
<td></td>
<td style="background-color: #333333;"></td>
</tr>
<tr>
<td style="background-color: #666666;"></td>
<td></td>
</tr>
</tbody>
</table>)

(ещё и рамка отображается всегда, но это решается при создании шаблона, нужно просто выставить "без обводки" в настройках таблицы)
*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Шаблон Artisteer, проблема c таблицами
« Ответ #3 : 15.08.2011, 23:25:35 »
а должно стоять (как вариант):
Код
<div align="center">
<table cellspacing="1" cellpadding="1" border="0" align="center" style="height: 300px; width: 200px;">
<tbody>
<tr>
<td style="background-color: #000000;" class="caption"></td>
<td></td>
</tr>
<tr>
<td></td>
<td style="background-color: #333333;"></td>
</tr>
<tr>
<td style="background-color: #666666;"></td>
<td></td>
</tr>
</tbody>
</table>
</div>
именно align="center" и выдаст центрование таблицы относительно краёв контента. Иногда применяется <span> - некая заглушка, тэг, не несущий никакого форматирования, внутрь которой можно прописать выравнивание, цвет или ещё что-нибудь, если div-у, например, уже заранее прописано в общем css-файле "выравнивать по левому краю"

На эту тему - http://htmlbook.ru
« Последнее редактирование: 15.08.2011, 23:35:18 от Dorfman »
*

dynamit

  • Завсегдатай
  • 1744
  • 265 / 0
  • Winter Is Coming
Re: Шаблон Artisteer, проблема c таблицами
« Ответ #4 : 15.08.2011, 23:40:46 »
<div align="center"> - центрирует сам див, но не его содержимое. в смысле, если див имеет ширину 100% (и наследует, допустим, 900px), а тэйбл - 600px, то таблица отцентрирована не будет. можно попробовать text-align:center в стиле для дива.
но лучше принудительно задавать ширину слоя равную ширине таблицы. и для верности:
Код: css
<div style="position:relative; margin: 0 auto;">
...
</div>
 
« Последнее редактирование: 15.08.2011, 23:44:31 от dynamit »
ТАМ ГДЕ ТЫ НИЧЕГО НЕ МОЖЕШЬ, ТЫ НЕ ДОЛЖЕН НИЧЕГО ХОТЕТЬ
==========================================================
Сайты на Joomla!. Верстка. Консультации.  ||  Яндекс уже не ищет, он уже продает (с)  ||    Создание шаблона для Joomla 2.5
*

velesov

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: Шаблон Artisteer, проблема c таблицами
« Ответ #5 : 11.10.2011, 15:29:19 »
Zinich, у меня таже проблема, бьюсь второй день. расскажите как решили.
*

denis.drobakhin

  • Новичок
  • 4
  • 0 / 0
Re: Шаблон Artisteer, проблема c таблицами
« Ответ #6 : 02.03.2012, 13:30:05 »
таже проблема!
*

Gammy2005

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Re: Шаблон Artisteer, проблема c таблицами
« Ответ #7 : 03.07.2012, 14:01:38 »
Помогло
<div align="center">
<table border="1" cellpadding="0" cellspacing="0" width="606">
  .....
</table>
</div>
Только смотрите какие свойства прописаны для <div>. И уберите все стили для таблицы - если копируете например из офиса.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Шаблон Artisteer, проблема c таблицами
« Ответ #8 : 03.07.2012, 14:06:29 »
И уберите все стили для таблицы - если копируете например из офиса.
Артистир и еще офис, такое надо банить не только в Яндексе но и на уровне провайдера, чтоб траф не расходовать зазря.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Слетели URL и шаблон

Автор max888

Ответов: 2
Просмотров: 5787
Последний ответ 28.12.2020, 17:37:52
от draff
VirtueMart 1.9 шаблон письма

Автор m176

Ответов: 0
Просмотров: 3094
Последний ответ 23.10.2020, 12:38:35
от m176
шаблон IT Newsy - By IceTheme проблема со списком.

Автор wolf34

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

Автор Porohok

Ответов: 6
Просмотров: 4864
Последний ответ 22.03.2017, 10:34:23
от Porohok
Как изменить шаблон категории в Joomla 1.5?

Автор nagav

Ответов: 8
Просмотров: 5558
Последний ответ 24.10.2016, 22:09:01
от nagav