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

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Ошибки FLEXIcontent 2.0.
« : 22.08.2011, 09:39:30 »
Попользовал бетку, в стандартной комплектации с типом article проблем не возникло, но при создании новых полей всплывают некоторые грабли.

1. Поле типа чекбокс-картинка. Ошибки при редактировании контента из админки:
Код
Notice: Undefined property: JForm::$version in Z:\home\j17\www\plugins\flexicontent_fields\checkboximage\checkboximage.php on line 74
Fatal error: Call to a member function isAdmin() on a non-object in Z:\home\j17\www\plugins\flexicontent_fields\checkboximage\checkboximage.php on line 91
Устарнение:
Вместо
Код
global $mainframe;
в строке 36 пишем
Код
$app = JFactory::getApplication();
$version = $item->getValue('version', NULL, 0);
Далее заменяем в 74 строке
Код
$item->version
на
Код
$version
В строке 91
Код
$mainframe->isAdmin()
на
Код
$app->isAdmin()

Заодно ниже ищем в функции onDisplayFieldValue
Код
global $mainframe;
и заменяем на
Код
$app = JFactory::getApplication();
и еще раз заменяем
Код
$mainframe->isAdmin()
на
Код
$app->isAdmin()
в той-же функции.
« Последнее редактирование: 26.11.2011, 08:04:32 от Arkadiy »
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Я не в курсе их языка, мне на русском гораздо тяжелее описать было, чем исправить, на аглицком еще тяжелее, но постараюсь.
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
дык программер-программера поймёт и так. это ж багрепорт.
копи-пасте текста ошибки, далее:
my solution to solve problem:
копипасте 2

всё ))
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
отлично!
и никаких лишних слов  )) путь к файлу, код ошибки, предлагаемое замещение - эсперанто для программеров )))
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Добавил все поля в тип для проверки, создаю новую статью, описания полей, которые есть в русском файле выдается кракозябрами, кодировку файла проверил, утф без бом. Странно. У кого как?
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
я пока английскую версию гоняю, чтобы не отвлекаться на подобные баги )
попробую чуть позже тогда великий и могучий )
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
бе. лучше пока английский врубить всё же - не вижу смысла отвлекаться на перевод. у меня половина админки без перевода, хотя кодаировка вроде не летит.
по факту RC зачистим. не думаю, что у кого-то из команды возникунут трудности с англ. интерфейсом )
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
effrit, ты задавал вопрос по поводу категорий на флекси-форуме, немного не понял. Можно по-русски?
И еще, при индексации содержимого для продвинутого поиска у меня выдает
Цитировать
Not yet select article type for advance search.
а в типах содержимого я никаких органов управления этим не нашел. Это глюк или я что-то не углядел?
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
Arkadiy, про категории - теперь нет выделения отдельной категории для flexi (было написано, что в целях оптимизации скорости), и все материалы com_content приводятся к типу "article" (т.е, если даже ты создал обычную статью в com_content, то, при входе в админку flexi, во влкдке items у тебы вылезет предупреждение о привязке нового контента к доп.полям. соглашаемся и получаме новый итем типа article).
на самом дел не принципеальное отличие, разве что весь роутинг со стандартного компонента должен идти на flexi (это моя теория пока )) ).

по поводу продвинутого поиска - у меня вообще не работает оно, жду обновление с правками по нашим багрепортам (типа обещано сегодня), тем более, что в SVN и второй программер тоже что-то по части поиска поправил.
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
о. уже поставили новую версию с фиксами, да ещё и новое прикольное поле с выбором связаных статей прикрутили ).щас на лисапеде прокачусь и тестить буду )
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Посмотрел СВН, мои вроде все пофиксили, вечером проверю.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Arkadiy, про категории - теперь нет выделения отдельной категории для flexi (было написано, что в целях оптимизации скорости), и все материалы com_content приводятся к типу "article" (т.е, если даже ты создал обычную статью в com_content, то, при входе в админку flexi, во влкдке items у тебы вылезет предупреждение о привязке нового контента к доп.полям. соглашаемся и получаме новый итем типа article).
на самом дел не принципеальное отличие, разве что весь роутинг со стандартного компонента должен идти на flexi (это моя теория пока )) ).
Не понятно почему они не именуют свои категории как свои, а подделываются под com_content, по этому и нету разделения. Все остальные компоненты напрямую заявляют о принадлежности своих категорий, по этому у них нет путаницы.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Посмотрел СВН, мои вроде все пофиксили, вечером проверю.
Половину пропустили.
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
да. печаль. пока курим ,пусть правят.

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

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Ну я в общем так и думал. Им торопиться некуда.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Хотел спросить по поводу шаблона - у них довольно красивый дефолтный шаблон был в ранних версиях, а сейчас какой-то просто белый. Так и должно или что-то потерялось?
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
Arkadiy, да вроде всегда белый был ). По крайней мере, я только белый и помню. едиснтвенная красивость у меня была на кнопке, да и та вроде со стилями свободного общего шаба шла ).

Виталик
http://code.google.com/p/flexicontent/downloads/list

пока без нормальной поддержки SEF, хотя с ним у меня не работают только теги, но может ещё где косяки
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А теги у тебя работают? Я не смог запомнить ни одного.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Arkadiy, да вроде всегда белый был ). По крайней мере, я только белый и помню. едиснтвенная красивость у меня была на кнопке, да и та вроде со стилями свободного общего шаба шла ).
Я помню автор, дата создания и т.п. обрамлялись толстой оранжевой линией с закругленными углами. Или я путаю?
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
теги работают. НО логика не интуитивна:
сначала пишем нужный тег, жмём enter.
поле очищается, как бы ничего не произошло. теперь начинаем вбивать этот же тег, AJAX его находит и предлагает выбрать, выбираем.

по поводу шаба - если поставить для типа другой шаблон, то часть полей будут собраны в блок с обрамлением, но рамочка- серая ))
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Странно, но теги у меня не запустились ни в хроме, ни в фф. По энтер они добавляются в список тегов, но в материале в админке так и не появляются ни при каких манипуляциях.
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
Arkadiy, надо ДВА раза их вводить. первый раз - чтобы они в базу попали, а второй, чтобы AJAX их словил:
т.е сначала в поле ввода пишем "news"- ввод, поде очищается, снова начинаем писать "news" и должна спалыть подсказка с выбором тега, выбираем, он добавляется к статье.
только что затестил в хроме (13.0.782.215) - всё пашет.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Так и делал, но не работает. Оказывается дома у меня 2.0 Beta3 r852, возможно из-за этого.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
При добавлении тега в новой 878 ревизии после второго набора получил
Цитировать
новыйтег
но после сохранения русские буквы вернулись.
добавил в хтаксесс
Код
AddDefaultCharset utf-8
php_value default_charset utf-8
все исправилось.
« Последнее редактирование: 29.08.2011, 14:41:53 от Arkadiy »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

FLEXIcontent не отрабатывает 404 ошибку?

Автор romagromov

Ответов: 6
Просмотров: 4321
Последний ответ 20.02.2017, 18:22:33
от voland
Автоматическая генерация мета-тегов Joomla 3 + FLEXIcontent

Автор VladimirVoice

Ответов: 2
Просмотров: 5119
Последний ответ 22.09.2016, 23:00:01
от serjik
Кнопки ПЕЧАТЬ в FLEXIcontent

Автор moltchan

Ответов: 2
Просмотров: 4310
Последний ответ 21.09.2016, 15:18:25
от moltchan
KunenaDiscuss + FLEXIcontent

Автор VladimirVoice

Ответов: 0
Просмотров: 4308
Последний ответ 29.11.2015, 08:45:48
от VladimirVoice
Кнопки в FLEXIcontent

Автор VladimirVoice

Ответов: 0
Просмотров: 4127
Последний ответ 16.11.2015, 15:30:36
от VladimirVoice