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

@l

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
 Подскажите, где взять плагин, который бы подсвечивал код 1с? Joomla 1.5.25, JCE 2.0.21
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Не могли бы пояснить, что такое код 1с?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

@l

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Не могли бы пояснить, что такое код 1с?
Код
Функция обПостроительВывестиПоГруппировкам(П) Экспорт
    Перем Источник, Таб, Макет, спзГруппы, спзИтоги, ПараметрыПостроителя, ПостроительОтчета;
    П.Свойство("Источник", Источник);
    П.Свойство("Таб", Таб);
    П.Свойство("Макет", Макет);
    П.Свойство("Группы", спзГруппы);
    П.Свойство("Итоги", спзИтоги);
    П.Свойство("ПараметрыПостроителя", ПараметрыПостроителя);
    
    ПостроительОтчета=Новый ПостроительОтчета();
    ПостроительОтчета.ИсточникДанных=Новый ОписаниеИсточникаДанных(Источник);
    обПостроительОтчетаУстановитьИзмерения(ПостроительОтчета, спзГруппы);
    обПостроительОтчетаУстановитьИтоги(ПостроительОтчета, спзИтоги);

    ПостроительОтчета.ЗаполнитьНастройки();
    обПостроительОтчетаСкорректироватьПорядокИзмерений(ПостроительОтчета, спзГруппы);
    ПостроительОтчета.Выполнить();
    Если Макет<>Неопределено Тогда
        ПостроительОтчета.Макет=обПостроительПреобразоватьМакет(Макет, спзГруппы);
    КонецЕсли;
    Если ПараметрыПостроителя<>Неопределено Тогда
        ЗаполнитьЗначенияСвойств(ПостроительОтчета, ПараметрыПостроителя);
    КонецЕсли;
    обПостроительПреобразоватьМакет(Макет, спзГруппы);
    Если Таб<>Неопределено Тогда
        ПостроительОтчета.Вывести(Таб);
    КонецЕсли;
    
    П.Вставить("ПостроительОтчета", ПостроительОтчета);
    
    Возврат ПостроительОтчета;
КонецФункции
или
Код
Процедура ВыбратьФайл()
Если ФС.ВыбратьФайл(0,ИмяФайла,Каталог,"Укажите путь к файлу индексированной таблицы","*.ivt",) = 1 Тогда
ПутьИИмяФайла = КАталог+ИмяФайла;
КонецЕсли;
ИТ = СоздатьОбъект("ИндексированнаяТаблица");
счСклад = _GetPerformanceCounter();
  ИТ.ИзФайла(ПутьИИмяФайла);
глЗамерВремени(счСклад,"Время открытия индексированной таблицы из "+Ит.КоличествоСтрок()+" строк: ");
ПТ = СоздатьОбъект("ПоказТаблиц");
ПТ.Показать(ИТ);
//ИТ.ВФайл(СтрЗаменить(ПутьИИмяФайла,"ivt","csv"));
КонецПроцедуры // ВыбратьФайл
Чтоб как здесь: http://help1c.com/faq82/view/903.html
 
« Последнее редактирование: 03.05.2012, 07:20:16 от @l »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
И зачем вам его подсвечивать в визуальном редакторе?
Вообще впервые слышу про подсветку кода в визуальном редакторе.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

@l

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
И зачем вам его подсвечивать в визуальном редакторе?
Вообще впервые слышу про подсветку кода в визуальном редакторе.
Да, я неправильно определил задачу. Подсвечивать нужно во фронтенде.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Ну, первое что нашел Google по запросу "Подсветка кода 1c":
http://x-romix.narod.ru/Highlight1C.html
highlight.js вам подойдет, инфа в инете есть.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

@l

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Ну, первое что нашел Google по запросу "Подсветка кода 1c":
http://x-romix.narod.ru/Highlight1C.html
highlight.js вам подойдет, инфа в инете есть.
Вопрос изучил.
В ссылке раскраска происходит "вручную". То есть это просто копия, раскрашеная php-скриптом.
По хайлайт - действительно раскрашивает, но, к сожалению, не так как нужно.
В 1с-овском редакторе по умолчанию переменные закрашиваются синим цветом, строки и числа черные, а ключевые слова и скобки - красные. Хайлайт понимает только комментарии и ключевые слова.
Случайно получилось с помощью плагина rj_insertcode и скриптов отсюда http://w1c.ru/hpc/ раскрасить как надо, но больше не могу воспроизвести...
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Вопрос изучил.
В ссылке раскраска происходит "вручную". То есть это просто копия, раскрашеная php-скриптом.

Неправда. Раскраска происходит в браузере вот этим скриптом : http://x-romix.narod.ru/Highlight1C.js
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

@l

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Неправда. Раскраска происходит в браузере вот этим скриптом : http://x-romix.narod.ru/Highlight1C.js

Да, согласен. Хотелось бы его для geshi перепилить - из javascript в php. Попробую. Знаний, правда, о что по одному языку, что по другому... :(
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Проще тогда взять из geshi любой похожий язык, вписать набор функций из 1c и подсветка синтаксиса считай готова. В geshi не ковырялся..
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

altvvc

  • Давно я тут
  • 523
  • 23 / 0
Geshi Бы справился, но ключевые слова в в 1С на кирилице? Обработка будет корректная?
Красота спасет мир, а пофигизм спасет нервы.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Так ведь есть уже готовые файлы для geshi . Вот например, первое что попалось
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

@l

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Так ведь есть уже готовые файлы для geshi . Вот например, первое что попалось
Его и использовал, но это не совсем то, что нужно - не "понимает" различия между переменной и текстом.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вставка кода - для просмотра?

Автор warlocksp

Ответов: 0
Просмотров: 1498
Последний ответ 17.09.2018, 09:26:51
от warlocksp
JCE Editor форматирование кода

Автор volniy_strelok

Ответов: 1
Просмотров: 1569
Последний ответ 08.12.2016, 14:13:39
от arma
Новая версия редактора JCE 2.6.1 - как включить подсветку синтаксиса в "Редакторе исходного кода"?

Автор Slava77

Ответов: 2
Просмотров: 2893
Последний ответ 03.12.2016, 21:24:38
от Slava77
JCE 2.6.0 - Пропала подсветка кода

Автор bombapiter

Ответов: 6
Просмотров: 2863
Последний ответ 29.11.2016, 20:34:00
от bombapiter
Нестандартные атрибуты и вообще об очистке исходного кода редактором

Автор azx

Ответов: 24
Просмотров: 6492
Последний ответ 01.12.2015, 17:27:39
от execute