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

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Привет !

Появилась необходимость публиковать примеры HTML и CSS на сайте.

Joomla! 3.8.5

Плагин Content - CodeCitation работает (хоть и перестал раскрашивать код), но вот HTML вообще вставлять не хочет

Есть ли решения ?
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Упс,  неужели нет  решения?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
textarea
Ну. Шаблон mod_custom переопределить и вывести содержимое в textarea. Потом можно и скрипт какой-то нацепить для подсветки/копирования...
Создание сайтов, шаблонов, помощь в решении проблем.
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
https://extensions.joomla.org/extensions/extension/core-enhancements/coding-a-scripts-integration/script-code-highlighter/
Либо лыжи не едут или сейчас лето, не знаю. Не работает

Пишу как в примере, получаю фиг-вам
Скриншот приатачиваю
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
У меня вот такой плагин прекрасно работает все подсвечивает на базе геши jdv GeSHi

Пример (хтмл CSS js)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
У меня вот такой плагин прекрасно работает все подсвечивает на базе геши jdv GeSHi

Пример (хтмл CSS js)

Joomla! 3.8.5 ?

Ну тогда не знаю, я уже отключал редактор, всё равно не работает
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Joomla! 3.8.5 ?

Ну тогда не знаю, я уже отключал редактор, всё равно не работает
Да, 3.8.5, вот скрин редактора админки (естественно без редактора, codemirror только и больше ничего не нужно) http://tinyurl.com/ycysnu6j
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Да, 3.8.5, вот скрин редактора админки (естественно без редактора, codemirror только и больше ничего не нужно) http://tinyurl.com/ycysnu6j

Да, я тоже пробую в codemirror но что то не работает. Буду думать

Кстати редактор TinyMCE при сохранении добавляет </pre> вот тут

<pre xml:lang="css" lines="false"></pre>

Типа умный редактор
« Последнее редактирование: 28.02.2018, 00:30:02 от palexa »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Плагин включен? Без редактора тоже не работает?
Даже если просто написать
Код
<pre lang="html4strict">
<h3>бла бла</h3>
</pre>
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Плагин включен? Без редактора тоже не работает?
Даже если просто написать
Код
<pre lang="html4strict">
<h3>бла бла</h3>
</pre>
Включён и кнопку включил  ^-^
Щас поставлю на денвер чистую Joomla 3.8.5, попробую
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Включён и кнопку включил  ^-^
Щас поставлю на денвер чистую Joomla 3.8.5, попробую

Поставил читсую Joomla 3.8.5 с демоданными на денвер + язык + плагин

Та же ерунда
Не работает
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Поставил на тестовую локальную 3.8.5 версию 1.0.0 - усе работает http://tinyurl.com/ydypylwq

code не надо же использовать, код заключается в теги pre
Цитировать
<h3>HTML разметка</h3>
<pre lang="html4strict">
<form name="testform" action="#" method="post" id="testform" class="wrapper">
   Сползает по крыше старик Козлодоев,<br />
</pre>
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Поставил на тестовую локальную 3.8.5 версию 1.0.0 - усе работает http://tinyurl.com/ydypylwq
Чудеса, даже не знаю что ответить
code не надо же использовать, код заключается в теги pre
Я уже и так и так пробую

Блин, либо что то не так делаю, либо не везёт
Версия Joomla!  Joomla! 3.8.5 Stable [ Amani ] 6-February-2018 15:00 GMT 
Версия Joomla! Platform  Joomla Platform 13.1.0 Stable [ Curiosity ] 24-Apr-2013 00:00 GMT 

Версия PHP на денвере 5.3.13 у хостера PHP 7.1.12

Ставлю плагин, включаю (никаких настроек плагина нет)
Редактор codemirror

Пишу код и получаю гранату

P.S. Иду спать, моя психика не выдерживает
« Последнее редактирование: 28.02.2018, 01:20:24 от palexa »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Да на всех версиях PHP он работает, и локально на 7 и у хостера на 5.6, даже на 4-й движка ставил тоже работает. По сути это обычное подключение библиотеки GeShi, только обернутое в плагин с тегами для удобства
Настроек у плагина и нет.
Даже не знаю что еще подсказать :)
Такой скрин как у тебя я получил только если отключил плагин, тогда да, PRE обрабатывается стилями шаблона\браузера, а так плагин только определяет язык, вырезает код и отдает его в обработчик геши заключая в <div class="geshi">
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
обычно в случае если на новой установленной Joomla работает а на сайте нет, я тогда ищу проблему, часто бывает что что то с чем то не совместимо. А тут не работает даже на чистой cms  >:(

И это при том что у тебя работает

Спасибо  и на этом  ^-^
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Напоследок убедимся, что сам плагин включен и работает
\plugins\content\jdvgeshi\jdvgeshi.php
добавь, к примеру, внутри цикла foreach какое нибудь эхо чего-нибудь, должно вывестись столько раз, сколько раз регулярка находит вхождение PRE.


P.S. надеюсь текст то в материале пишешь, не в модуле? :) Уже от безысходности бытия всякое предполагаю ..
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Неплохой хайлайтер. Много языков и стилей. Подключить и вперед.

https://highlightjs.org/static/demo/

« Последнее редактирование: 28.02.2018, 01:46:18 от capricorn »
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Цитировать
\plugins\content\jdvgeshi\jdvgeshi.php

Нету такого
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Ну так значит плагин не поставился, раз нет его главного файла, там в этой категории \plugins\content\jdvgeshi\ еще должны лежать файлы самого геши.

Прикрепил версию, попробуй удалить что у тебя и поставить этот архив
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
 :D Заработало!
Агромное спасибо
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Конфликт с плагином Content - CodeCitation

Написано так

Код
<p>Вариант №1</p>
<p>{code}#!/bin/bash<br />#Удалить файлы в указаной директории старше чем 15 дней, с расширением wav<br />find /var/spool/asterisk/monitor/ -name '*.wav' -mtime +15 -delete<br />#Удалить в указаной директории пустые каталоги<br />cd /var/spool/asterisk/monitor/<br />find -depth -type d -empty -exec rmdir {} \;{/code}</p>

В скрине показываю как было, и как стало (переписывать все статьи для нового плагина не реально)
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Неплохой хайлайтер. Много языков и стилей. Подключить и вперед.

https://highlightjs.org/static/demo/
Не совсем понял как подключить ?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Не совсем понял как подключить ?
написать плагин жеж ))

а что за плагин CodeCitation и откуда могут быть конфликты, если геши лишь смотрит на входящий текст и ищет там ПРЕ?

Попробовать в списке плагинов поменять их местами

P.S. кажется я понял, что у тебя вчера было, почему не было файла плагина - ты поставил плагин кнопки для редактора, но не сам плагин подсветки кода, естественно что не работало :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
написать плагин жеж ))

а что за плагин CodeCitation и откуда могут быть конфликты, если геши лишь смотрит на входящий текст и ищет там ПРЕ?

Попробовать в списке плагинов поменять их местами
Поставил его выше CodeCitation, всё ок

Но HTML код не раскрашивает

Код
<pre lang=html4strict>
<h5>Система управления контентом</h5>
<h3>Система управления контентом</h3>
<h6>Система управления контентом</h6>
</pre>

CSS раскрашивает

Вот скриншот

P.S. кажется я понял, что у тебя вчера было, почему не было файла плагина - ты поставил плагин кнопки для редактора, но не сам плагин подсветки кода, естественно что не работало :)
Не, просто ночью уже не сообразил, и перепутал плагины. Упорно ставил плагин Content - Script Code Highlighter (GeSHi) и совсем забыл что это не тот
Понял уже когда ты плагин приатачил

codecitation.1.3.1j16 может обновление поискать надо, но что то я уже очкую что то обновлять >:(
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
- ты поставил плагин кнопки для редактора

На сайте где лежит плагин кнопки не было, а где взять для удобства вставки кода ?
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Код
<pre lang=bash>
!/bin/bash
#Удалить файлы в указаной директории старше чем 15 дней, с расширением wav
find /var/spool/asterisk/monitor/ -name '*.wav' -mtime +15 -delete
#Удалить в указаной директории пустые каталоги
cd /var/spool/asterisk/monitor/
find -depth -type d -empty -exec rmdir {} \;
</pre>
bash - тоже не раскрашивает
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Проверил, баш тоже работает
Кавычки не забывай заворачивать название языка
Код
<pre lang="bash">
Без них не подсвечивает (не может определить язык, хотя плагин отрабатывает)

http://tinyurl.com/yatbjn4n
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Проверил, баш тоже работает
Кавычки не забывай заворачивать название языка
Код
<pre lang="bash">
Без них не подсвечивает (не может определить язык, хотя плагин отрабатывает)

Упс, кавычки, спасибо

codecitation HTML по ходу не поддерживает и вообще не обрабатывает, но другие языки красиво подсвечивает

Вот скриншот
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль отображения сообщений группы телеграмм на сайте

Автор kunsaid

Ответов: 2
Просмотров: 2084
Последний ответ 08.02.2024, 13:13:27
от kunsaid
Модуль вывода новостей из группы вконтакте на своем сайте?

Автор Snip

Ответов: 9
Просмотров: 8286
Последний ответ 09.03.2023, 16:11:43
от antony2606
Нужен плагин или модуль вывода Яндекс Дзен канала на сайте

Автор Lemonez

Ответов: 0
Просмотров: 910
Последний ответ 15.08.2022, 22:23:09
от Lemonez
Плагин который скрывает выбранную часть исходного кода страницы

Автор Scaltro

Ответов: 0
Просмотров: 814
Последний ответ 20.06.2022, 22:47:32
от Scaltro
Вывести на сайте отзывы с Google

Автор Stasweb

Ответов: 4
Просмотров: 7399
Последний ответ 18.02.2022, 06:40:16
от Stasweb