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

joomla-mla

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Как исправить баг?
« : 14.09.2009, 16:44:42 »
Может, я не в тот раздел обращаюсь - заранее прошу прощ. - здесь новичок.
Вот проблема: на сайте http://www.almrally.ru/news-archive?year=2009&month=9 при нажатии странички новостей (внизу: 1, 2 и т.п.) вылезает баг - не туда переправляется. В HTML-коде страницы вижу фрагмент:
Код
<tr> 
<td valign="top" align="center">
&lt;&lt; <span class="pagenav">Первая</span> &lt; <span class="pagenav">Предыдущая</span> <span class="pagenav">1</span> <a title="2" href="/news-archive/2009/9?start=10" class="pagenav">2</a> <a title="3" href="/news-archive/2009/9?start=20" class="pagenav">3</a> <a title="4" href="/news-archive/2009/9?start=30" class="pagenav">4</a> <a title="5" href="/news-archive/2009/9?start=40" class="pagenav">5</a> <a title="6" href="/news-archive/2009/9?start=50" class="pagenav">6</a> <a title="7" href="/news-archive/2009/9?start=60" class="pagenav">7</a> <a title="8" href="/news-archive/2009/9?start=70" class="pagenav">8</a> <a title="9" href="/news-archive/2009/9?start=80" class="pagenav">9</a> <a title="10" href="/news-archive/2009/9?start=90" class="pagenav">10</a> <a title="Следующая" href="/news-archive/2009/9?start=10" class="pagenav">Следующая</a> &gt; <a title="Последняя" href="/news-archive/2009/9?start=100" class="pagenav">Последняя</a> &gt;&gt; <br /><br />
</td>
</tr>

Похоже, что именно здесь приведен код (неправильный, правильный будет
Код
news-archive?year=2009&month=9&start=10
Код
news-archive?year=2009&month=9&start=20
и т.п.). Вопрос в том, где искать исходник, который этот код генерит? В каком-нибудь отдельном файле? пжл-ста, у кого есть какие соображения, подскажите!
*

doctorgrif

  • Давно я тут
  • 745
  • 82 / 1
  • Нудный доктор
Re: Как исправить баг?
« Ответ #1 : 14.09.2009, 17:17:41 »
/includes/pageNavigation.php
Омск-Екатеринбург-Челябинск...Feldzug gen Westen | Кафедра | GrayBox | Joostina 1.2.1 | Joostina Extensions | In Vino Veritas [в работе]
*

joomla-mla

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Как исправить баг?
« Ответ #2 : 14.09.2009, 18:28:29 »
Спасибо. По тому адресу был require - нашел.
Но
Код
class mosPageNav extends JPagination
{
function mosPageNav( $total, $limitstart, $limit ) {
parent::__construct($total, $limitstart, $limit);
}

/**
* Writes the dropdown select list for number of rows to show per page
* Use: print $pagination->getLimitBox();
*
* @deprecated as of 1.5
*/
function writeLimitBox($link = null) {
echo $this->getLimitBox();
}

/**
* Writes the counter string
* Use: print $pagination->getLimitBox();
*
* @deprecated as of 1.5
*/
function writePagesCounter() {
return $this->getPagesCounter();
}

/**
* Writes the page list string
* Use: print $pagination->getPagesLinks();
*
* @deprecated as of 1.5
*/
function writePagesLinks($link = null) {
return $this->getPagesLinks();
}

/**
* Writes the HTML for the leafs counter, eg, Page 1 of x
* Use: print $pagination->getPagesCounter();
*
* @deprecated as of 1.5
*/
function writeLeafsCounter() {
return $this->getPagesCounter();
}

/**
* Returns the pagination offset at an index
* Use: $pagination->getRowOffset($index); instead
*
* @deprecated as of 1.5
*/
function rowNumber($index) {
return $index +1 + $this->limitstart;
}
Понятно только то, что дальше функции работают с какими-то картинками (иконками). А имеет ли приведенный код какое-то отношение к навигации-пагинации?
*

joomla-mla

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Как исправить баг?
« Ответ #3 : 15.09.2009, 09:52:03 »
Нашел несколько файлов типа pagination.php - но ни ссылок на эти файлы, на даже файла, генерящего эти ссылки. Видимо, все так или иначе завязано на index.php - народ, может, кто знает, может, используется какой компонент для новостей?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

joomla-mla

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Как исправить баг?
« Ответ #5 : 15.09.2009, 15:00:18 »
спасибо. только там-таки нет ответа на вопрос - как что-нибудь исправить. Вот у меня выдается в строке браузера http://www.almrally.ru/news-archive а при нажатии на кнопки - http://www.almrally.ru/news-archive?start=10 (2 стр.),
http://www.almrally.ru/news-archive?start=20 (3 стр.) и т.д. Все верно - новости одна за другой "вытягиваются". НО: стоит только выбрать месяц (август, например), как все рушится - точнее, первая страница "выстраивается" правильно (см. http://www.almrally.ru/news-archive?year=2009&month=8), а вот все последующие косят (http://www.almrally.ru/news-archive/2009/8?start=10).
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Решено. Шаблон YooMilk где исправить Continue Reading ?

Автор Nino

Ответов: 3
Просмотров: 4035
Последний ответ 18.07.2015, 14:14:57
от rukodelie
Как исправить шаблон для IE?

Автор ishimov

Ответов: 11
Просмотров: 2984
Последний ответ 05.11.2012, 22:38:36
от ishimov
Надо исправить на шаблоне стиль раскрывающиеся меню, шаблон сделан с помощью артистир 3.0...

Автор beki007

Ответов: 1
Просмотров: 1821
Последний ответ 09.01.2012, 04:03:32
от beki007
Звездочки и квадратики вместо русских символов в некоторых шаблонах: как это можно исправить?

Автор olesya055

Ответов: 9
Просмотров: 4806
Последний ответ 22.10.2011, 14:36:33
от olesya055
Как исправить и в центр поставить?

Автор alon

Ответов: 10
Просмотров: 4119
Последний ответ 25.05.2011, 14:00:08
от Evgeniy_89