Новости 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 Пользователей и 3 Гостей просматривают эту тему.
  • 680 Ответов
  • 153749 Просмотров
*

4ertenok13

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Re: Тестирование smfaq
« Ответ #60 : 20.03.2012, 14:40:48 »
SmokerMan
ясно.
Зайдите в phpMyAdmin и выполните SQL запрос
Код
DELETE FROM `#__menu` WHERE `link` LIKE '%com_smfaq%'
#_ - замените на свой префикс
Затем удалите компонент через менеджер расширений и установите заново.

удалила через менеджер расширений, написал, что "компонент удалён успешно", но "нельзя удалять меню панели управления". Ставить заново? Или что-то надо ещё сделать перед этим?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #61 : 20.03.2012, 14:49:18 »
попробуйте заново просто поставить и потом плагин установить без удаления.
*

4ertenok13

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Re: Тестирование smfaq
« Ответ #62 : 20.03.2012, 14:56:56 »
SmokerMan

всё получилось)))спасибо))
*

4ertenok13

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Re: Тестирование smfaq
« Ответ #63 : 20.03.2012, 15:03:59 »
SmokerMan

Всё поставилось, меню появилось, категория создалась даже, НО при создании вопроса на этапе "сохранить и закрыть" меня выбросило на

Код
Fatal error: Call to undefined method JDate::toSql() 
in Z:\home\localhost\www\Planetaludei\administrator\components\com_smfaq\models\smfaq.php on line 134

собственно так было и в прошлый раз с чего и началась вся заморочка с восстановлением из бекапа...
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #64 : 20.03.2012, 15:09:53 »
ну так и написали бы об этом сразу)))
такого метода в 1.7 может и не быть. в 2.5 он есть.
Это версия как раз для тестирования на 2.5, так что можете пока поставить ту версию, которая опубликована на оф. сайте.
*

4ertenok13

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Re: Тестирование smfaq
« Ответ #65 : 20.03.2012, 15:15:54 »
ну так и написали бы об этом сразу)))
такого метода в 1.7 может и не быть. в 2.5 он есть.
Это версия как раз для тестирования на 2.5, так что можете пока поставить ту версию, которая опубликована на оф. сайте.

да я хотела, просто решила начать с насущных, так сказать, проблем) думала, может "с вопросом" - это следствие кривизны рук..
а мне опять через запрос в базу и последующую деинсталляцию действовать?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #66 : 20.03.2012, 15:20:47 »
Нет он должен удалиться нормально. Такое как у вас возникает в редких случаях когда неправильно удаляется расширение или что-то не так с БД.
*

4ertenok13

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Re: Тестирование smfaq
« Ответ #67 : 20.03.2012, 15:23:16 »
Вот это Ваше
Цитировать
или что-то не так с БД.
конечно,пугает)))))
пошла удалять и инсталлировать, скрестив пальцы и зрительные нервы)
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #68 : 20.03.2012, 15:24:28 »
а так советую обновить Joomla, т.к. 1.6-1.7 - это промежуточные версии и они вроде уже не поддерживаются или скоро не будут поддерживаться.
*

4ertenok13

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Re: Тестирование smfaq
« Ответ #69 : 20.03.2012, 15:28:40 »
а так советую обновить Joomla, т.к. 1.6-1.7 - это промежуточные версии и они вроде уже не поддерживаются или скоро не будут поддерживаться.

Вероятно, я так и сделаю, но хотелось бы доделать этот сайт на 1.7.Я пока не умею граммотно "мигрировать", а делать сайт по третьему разу заново вообще не хочется))

Компонент, кстати, удалился, а плагин отказывается
Код
Table 'planetaludei.jjd51_smfaq' doesn't exist SQL=ALTER TABLE jjd51_smfaq DROP `my_field`

что по всей видимости значит, что его там уже и нет, так как в базе ничего похожего не наблюдается...

UPD. версия 1.6 работает: создаёт категории и вопросы. Я счастлива))

Ещё раз большое спасибо!
« Последнее редактирование: 20.03.2012, 15:37:03 от 4ertenok13 »
*

NeoKS

  • Новичок
  • 5
  • 1 / 0
  • I LIKE JOOMLA
Re: Тестирование smfaq
« Ответ #70 : 22.03.2012, 07:24:28 »
У кого не работает вы в категории вопросов Управление настройками прав доступа для групп пользователей меняли на разрешено, а не унаследовано?
Мне это помогло! Спасибо!
Отдельное огромное спасибо SmokerMan за прекрасный компонент! :D
« Последнее редактирование: 22.03.2012, 09:11:12 от NeoKS »
*

goon77772

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
Re: Тестирование smfaq
« Ответ #71 : 22.03.2012, 15:27:44 »
Joomla 2.5.3 выкидывает во фронте при нажатии на кнопку редактировать...((
Код
Warning: require_once(components/com_smfaq/libraries/calendar/calendar.php) [function.require-once]: failed to open stream: No such file or directory in D:\WEBSITE\www\components\com_smfaq\views\edit\view.html.php on line 69

Fatal error: require_once() [function.require]: Failed opening required 'components/com_smfaq/libraries/calendar/calendar.php' (include_path='D:\usr\php\includes') in D:\WEBSITE\www\components\com_smfaq\views\edit\view.html.php on line 69
Права на категории
Public
Добавить вопрос - разрешено
Super Users
Добавить вопрос - разрешено
Редактировать (Отвечать) - разрешено 
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #72 : 22.03.2012, 16:44:16 »
goon77772
по какой-то причине у вас нет файла components/com_smfaq/libraries/calendar/calendar.php
Почему его нет я не знаю, в дистрибутиве компонента он присутствует.
*

goon77772

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
Re: Тестирование smfaq
« Ответ #73 : 22.03.2012, 17:55:36 »
Код
		$baseurl = $this->document->baseurl;
$this->document->addStyleSheet( $baseurl . 'components/com_smfaq/css/smfaq_edit.css' );
require_once $baseurl . 'components/com_smfaq/libraries/calendar/calendar.php';
require_once $baseurl . 'components/com_smfaq/libraries/calendar/calendar.php';
SmfaqHelperCalendar::setup();
$this->document->addScript( $baseurl . 'components/com_smfaq/libraries/calendar/js/jscal2.js');
$this->document->addStyleSheet( $baseurl . 'components/com_smfaq/libraries/calendar/css/jscal2.css');
$this->document->addStyleSheet( $baseurl . 'components/com_smfaq/libraries/calendar/css/gold/gold.css');
Физически все файлы есть..
напрямую если запрашивать выдает @-_-@
http://название сатйа/components/com_smfaq/libraries/calendar/calendar.php
// защита от прямого доступа
defined('_JEXEC') or die('@-_-@');

При редактировании вопроса через  админку календарь работает...


$baseurl = $this->document->baseurl; - я предполагаю что загвоздка где то тут!!
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #74 : 22.03.2012, 18:12:43 »
ну не знаю, подождем что скажут остальные. Потому что у меня никакой ошибки нет. И пути в ошибке вроде правильные.
И почему он там два раза инклудится не знаю, у меня такого нет.
можете попробовать заменить
Код
require_once $baseurl . 'components/com_smfaq/libraries/calendar/calendar.php';
на
Код
require_once JPATH_SITE.DS.'components/com_smfaq/libraries/calendar/calendar.php';

Ось какая линукс или windows?



« Последнее редактирование: 22.03.2012, 18:22:28 от SmokerMan »
*

timonych

  • Осваиваюсь на форуме
  • 18
  • 5 / 0
Re: Тестирование smfaq
« Ответ #75 : 22.03.2012, 22:38:43 »
Всем Привет :)

Для начала - Большое спасибо автору за проделанную работу :D

никто с такой ошибкой вывода компонента во фронт не встречался?

тут

Ругается на
Код
default_form

Если под пользователем зайти - все нормально. А Гостю будто мешает что-то.
« Последнее редактирование: 22.03.2012, 22:42:42 от timonych »
*

timonych

  • Осваиваюсь на форуме
  • 18
  • 5 / 0
Re: Тестирование smfaq
« Ответ #76 : 22.03.2012, 22:42:05 »
Всем Привет :)

Для начала - Большое спасибо автору за проделанную работу :D

никто с такой ошибкой вывода компонента во фронт не встречался?

тут

Ругается на
Код
default_form

Если под пользователем зайти - все нормально. А Гостю будто мешает что-то.
Проблему решил отключением Формы в настройках Категории
*

goon77772

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
Re: Тестирование smfaq
« Ответ #77 : 22.03.2012, 23:00:35 »
Ось винда 2003
Посмотрел как реализовано в админке..
administrator\components\com_smfaq\views\smfaq\view.html.php
Код
		$baseurl = JURI::BASE();
$this->document->addStyleSheet( $baseurl . 'components/com_smfaq/css/smfaq_edit.css' );
require_once JPATH_SITE.DS.'components/com_smfaq/libraries/calendar/calendar.php';
SmfaqHelperCalendar::setup();
$this->document->addScript( $baseurl . 'components/com_smfaq/libraries/calendar/js/jscal2.js');
$this->document->addStyleSheet( $baseurl . 'components/com_smfaq/libraries/calendar/css/jscal2.css');
$this->document->addStyleSheet( $baseurl . 'components/com_smfaq/libraries/calendar/css/gold/gold.css');

За оперативный ответ спасибо.

*

Dorfman

  • Завсегдатай
  • 1202
  • 78 / 4
  • Почти влез...
Re: Тестирование smfaq
« Ответ #78 : 23.03.2012, 13:33:23 »
хех... Имел неосторожность обновиться с предыдущей версии до актуальной без бэкапа - исчезла форма введения вопроса...



UPD замечено, что форма не работает только для авторизованных юзеров. Для Гостей всё нормально. Права все выставлены правильно.
Пациент здесь
*

vvz

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: Тестирование smfaq
« Ответ #79 : 01.04.2012, 13:53:23 »
Отличный компонент! Спасибо автору за работу! Но есть пара нюансов:

1. Очень нужно, чтобы материалы (и вопросы, и ответы) категории индексировались поиском и выводились при запросе поиска на сайте. Причем, выводились только те, на которые опубликованы ответы.
2. Так же нужно, чтобы опубликованные материалы добавлялись в RSS-ленту и в модуль Материалы-последние новости (или Новости) и Материалы-самые читаемые.

Возможно это воплотить?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #80 : 01.04.2012, 14:08:03 »
1. Очень нужно, чтобы материалы (и вопросы, и ответы) категории индексировались поиском и выводились при запросе поиска на сайте. Причем, выводились только те, на которые опубликованы ответы.
Если про стандартный поиск J идет речь, то для этого нужно написать плагин для поиска, возможно скоро этим займусь.
2. Так же нужно, чтобы опубликованные материалы добавлялись в RSS-ленту и в модуль Материалы-последние новости (или Новости) и Материалы-самые читаемые.
Здесь я ничего не понял. Причем здесь материалы? Это отдельный компонент и к материалам не имеет никакого отношения.
По поводу RSS-ленты, возможно тоже добавится в ближайшее время.
*

vvz

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: Тестирование smfaq
« Ответ #81 : 01.04.2012, 15:30:35 »
Если про стандартный поиск J идет речь, то для этого нужно написать плагин для поиска, возможно скоро этим займусь.
...
По поводу RSS-ленты, возможно тоже добавится в ближайшее время.
Можно как-то получить уведомление о добавлении этих опций?

Цитировать
Здесь я ничего не понял. Причем здесь материалы? Это отдельный компонент и к материалам не имеет никакого отношения.
Суть в том, чтобы можно было бы вывести в отдельный модуль "самые читаемые"
« Последнее редактирование: 01.04.2012, 15:41:33 от vvz »
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #82 : 01.04.2012, 15:46:41 »
Можно как-то получить уведомление о добавлении этих опций?
Пока читать данную тему. Внизу есть кнопочка "уведомлять". Так же если будет выпущена новая версия можно будет обновить компонент автоматически через админ панель Joomla.
Суть в том, чтобы можно было бы вывести в отдельный модуль "самые читаемые"
тогда не понятно как будут формироваться список из этих "самые читаемые". В компоненты функция хитов не предусмотрена и не предвидится.
*

vvz

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Re: Тестирование smfaq
« Ответ #83 : 01.04.2012, 16:41:10 »
Пока читать данную тему...
Спасибо за работу!
И последнее...
Для поддержания проекта и в благодарность за проделанный труд и тех.поддержку хочу внести посильное добровольное пожертвование.
Думаю многие тут со мной согласятся. Есть ли у Вас счет в системе WebMoney?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #84 : 01.04.2012, 16:54:04 »
Для поддержания проекта и в благодарность за проделанный труд и тех.поддержку хочу внести посильное добровольное пожертвование.
Думаю многие тут со мной согласятся. Есть ли у Вас счет в системе WebMoney?
В профиле на это форуме у меня кошельки рабочие.
Как выйдет стабильный релиз у расширения будет своя страница там все будет. Сейчас ведутся работы над этим.
*

reanimatolog

  • Новичок
  • 2
  • 0 / 0
Re: Тестирование smfaq
« Ответ #85 : 03.04.2012, 13:43:50 »
Здравствуйте!
Как переместить форму ввода вопроса ПОД список вопрос/ответов??



*

reanimatolog

  • Новичок
  • 2
  • 0 / 0
Re: Тестирование smfaq
« Ответ #86 : 03.04.2012, 14:03:17 »
Цитировать
Как переместить форму ввода вопроса ПОД список вопрос/ответов??

Уже нашел:
в файле /components/com_smfaq/views/category/tmpl/default.php
переставить блок кода
Код
<?php // Вывод формы добавления вопроса
$canCreate = $this->user->authorise('core.create', 'com_smfaq.category.'.$this->category->id);
$canEdit = $this->user->authorise('core.edit', 'com_smfaq.category.'.$this->category->id);
if ($canCreate && !$canEdit) :
if ($this->params->get('show_form', 0)) : ?>
<div><?php echo $this->loadTemplate('form'); ?></div>
<?php else : ?>
<span onclick="SmFaq.showform(true,this)" class="button"><?php echo JText::_('COM_SMFAQ_NEW_QUESTION'); ?></span>
<?php endif; ?>
<?php elseif ($canEdit) : ?>
<a href="<?php echo JRoute::_('index.php?option=com_smfaq&amp;task=smfaq.add&amp;catid='.$this->category->id); ?>" class="button">
<?php echo JText::_('COM_SMFAQ_NEW_QUESTION'); ?></a>
<span class="button" style="margin-left:10px;" onclick="SmFaq.unpublished(<?php echo JRequest::getInt('Itemid', null); ?>)">
<?php echo JText::_('COM_SMFAQ_SHOW_NO_ANSWER_QUESTIONS'); ?></span>
<div id="smfaq-unpub"></div>
<?php endif; ?>

под
Код
<?php //Пагинация ?>
..... ..... .....
<?php endif; ?>

и будет щастье!
*

MontyZoom

  • Новичок
  • 7
  • 0 / 0
Re: Тестирование smfaq
« Ответ #87 : 04.04.2012, 11:23:20 »
Не пойму, как сделать, чтоб при нажатии в меню задать вопрос - сразу выскакивала форма для вопроса
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Тестирование smfaq
« Ответ #88 : 04.04.2012, 12:47:44 »
Не пойму, как сделать, чтоб при нажатии в меню задать вопрос - сразу выскакивала форма для вопроса
читайте описание компонента, что тут еще можно сказать.
*

MontyZoom

  • Новичок
  • 7
  • 0 / 0
Re: Тестирование smfaq
« Ответ #89 : 04.04.2012, 14:41:45 »
читайте описание компонента, что тут еще можно сказать.

Спасибо за чудесный компонент.
Дело в том, что я пользовался им на Joomla 1.6, и настраивал, но вот тут не получается - не появляется форма для отправления, а только кнопка задать вопрос и то при ее нажатии написано что нет прав,хотя все права для public установил.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT Telegram bot - отправка данных из Joomla в Telegram-бота

Автор sergeytolkachyov

Ответов: 4
Просмотров: 2836
Последний ответ 01.08.2025, 09:26:57
от sergeytolkachyov
Модуль вывода новостей. Joomla 3.x

Автор fbr

Ответов: 54
Просмотров: 28641
Последний ответ 22.07.2025, 10:13:22
от fbr
JL Like - Социальные кнопки для Joomla (новый взгляд)

Автор zikkuratvk

Ответов: 636
Просмотров: 106648
Последний ответ 07.07.2025, 11:00:34
от zikkuratvk
Плагин для закрытия ссылок в Joomla 3 - noExternalLinks

Автор buyanov

Ответов: 65
Просмотров: 18876
Последний ответ 06.04.2025, 02:51:35
от azm1n
SW JProjects - Менеджер цифровых проектов для Joomla! CMS™

Автор Septdir

Ответов: 59
Просмотров: 9045
Последний ответ 24.03.2025, 13:06:54
от sergeytolkachyov