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

Patrick

  • Захожу иногда
  • 122
  • 6 / 12
Проблема такая появилась.
Есть два шаблона. 1 шаблон и 2 шаблон. 1 шаблон назначен главной, 2 шаблон назначен всем остальным.

Заголовки новостей, сделаны ввиде ссылок. Так вот, при нажатии на заголовок новости на главной странице, остается 1 шаблон, а при нажатии на кнопку подробнее 2 шаблон.

Ссылки выглядят так:
Ссылка заголовка - http://www.сайт.ru/content/view/446/1/
Ссылка кнопки подробнее - http://www.сайт.ru/content/view/446/224/

Мне необходимо, чтобы обе ссылки были одинаковыми и использовали 2 шаблон, как ссылка на кнопке подробнее.

P.S. Может быть это имеет значение - стоит компонент Смарта JComment, который выдает кнопку подробнее с правильной ссылкой.

Как решить проблему?
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Firefox the best, Google the best, jQuery the best.
yAnTar блог

Re: Две разные ссылки на один материал
« Ответ #2 : 21.02.2007, 19:07:08 »
Проблема такая появилась.
Есть два шаблона. 1 шаблон и 2 шаблон. 1 шаблон назначен главной, 2 шаблон назначен всем остальным.

Заголовки новостей, сделаны ввиде ссылок. Так вот, при нажатии на заголовок новости на главной странице, остается 1 шаблон, а при нажатии на кнопку подробнее 2 шаблон.

Ссылки выглядят так:
Ссылка заголовка - http://www.сайт.ru/content/view/446/1/
Ссылка кнопки подробнее - http://www.сайт.ru/content/view/446/224/

Мне необходимо, чтобы обе ссылки были одинаковыми и использовали 2 шаблон, как ссылка на кнопке подробнее.

P.S. Может быть это имеет значение - стоит компонент Смарта JComment, который выдает кнопку подробнее с правильной ссылкой.

Как решить проблему?

А у меня все ссылки с главной ведут на Itemid=1! Как-то реально исправить, чтобы они вели на нужный раздел и открывали нужное меню?

Получается, что содержимое материалов выводится на главной странице, которая довольно загружена разными модулями. Раньше вроде было нормально, но вот заметил, что сейчас все материалы открываются с Itemid=1, не зависимо нажал ли ты на заголовок или на "подробнее..."

Re: Две разные ссылки на один материал
« Ответ #3 : 23.02.2007, 17:03:42 »
А у меня все ссылки с главной ведут на Itemid=1! Как-то реально исправить, чтобы они вели на нужный раздел и открывали нужное меню?

Получается, что содержимое материалов выводится на главной странице, которая довольно загружена разными модулями. Раньше вроде было нормально, но вот заметил, что сейчас все материалы открываются с Itemid=1, не зависимо нажал ли ты на заголовок или на "подробнее..."

Разобрался! Если кому-то интересно конечно....

В версии 1.0.12 неправилно проставляются ItemID! Это я потом уже вспомнил, что давно уже читал об этом....

Вот, выставляю как править:

components/com_content/content.html.php line ~397
Code:

$_Itemid = $Itemid;


Change that line to:
Code:

$_Itemid = $mainframe->getItemid( $rows[$i]->id, 0, 0  );


same file, line ~556
Code:

$row->_Itemid = $Itemid;


Remove that line and paste in:
Code:

if ( $task != 'view' && $task != 'category' ) {
     $row->_Itemid = $mainframe->getItemid( $row->id, 0, 0 );
} else {
     // when viewing a content item, it is not necessary to calculate the Itemid
     $row->_Itemid = $Itemid;
}

*

ua-ix

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Re: Две разные ссылки на один материал
« Ответ #4 : 28.02.2007, 13:58:53 »
Ребята, у меня вот какая проблема:
Есть адрес материала:
http://sait.ru/content/view/52/1/
я раскручиваю жту страницу в поисковниках, а вот сегодня смотрю и вылезла в индекс совсем другаю старница( всмысле с другим адресом)
http://sait.ru/content/view/52/60/
Можно ли как-то решить данную проблему, потому что получаются все труды на помойку
Ведь не факт что проиндексироваться может и
http://sait.ru/content/view/52/65/
http://sait.ru/content/view/52/69/
и т.д..
Жду ВАших советов

Re: Две разные ссылки на один материал
« Ответ #5 : 28.02.2007, 14:10:38 »
Ребята, у меня вот какая проблема:
Есть адрес материала:
http://sait.ru/content/view/52/1/
я раскручиваю жту страницу в поисковниках, а вот сегодня смотрю и вылезла в индекс совсем другаю старница( всмысле с другим адресом)
http://sait.ru/content/view/52/60/
Можно ли как-то решить данную проблему, потому что получаются все труды на помойку
Ведь не факт что проиндексироваться может и
http://sait.ru/content/view/52/65/
http://sait.ru/content/view/52/69/
и т.д..
Жду ВАших советов

Там выше, вроде как суюда посылали:

http://joomlaforum.ru/index.php/topic,10196.0.html
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать цикличиские ссылки Joomla 1.0?

Автор p4o1

Ответов: 4
Просмотров: 10351
Последний ответ 13.12.2019, 11:31:05
от vest
Как достать материал из архива

Автор Galina

Ответов: 2
Просмотров: 7109
Последний ответ 15.04.2011, 14:20:59
от Galina
[Решено] Перенос Joomla 1.0.12 с хоста на хост - не отображается материал

Автор maestra

Ответов: 2
Просмотров: 6363
Последний ответ 16.12.2010, 11:36:52
от maestra
Внешние ссылки

Автор Patrick

Ответов: 2
Просмотров: 5134
Последний ответ 11.06.2010, 11:58:29
от Ecspert
Как вместо ссылки на контент сделать прямую ссылку на другой сайт?

Автор memo

Ответов: 2
Просмотров: 5194
Последний ответ 22.09.2009, 15:45:27
от memo