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

metallexportprom

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
При проверке на валидность сайта выходит ошибка в мета теге <meta http-equiv="content-type" content="text/html; charset=utf-8" />
Пишет, что наклонная черта (которая красная) лишняя и ее нужно убрать. Как это сделать?
http://www.ural-mep.ru- это сам сайт.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Кто пишет? Ничего не лишняя...
*

metallexportprom

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Кто пишет? Ничего не лишняя...
Пишет w3c
Вот краткое описание после проверки
Validation Output: 36 Errors

    Warning Line 3, Column 70: NET-enabling start-tag requires SHORTTAG YES

      <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    ✉

    The sequence <FOO /> can be interpreted in at least two different ways, depending on the DOCTYPE of the document. For HTML 4.01 Strict, the '/' terminates the tag <FOO (with an implied '>'). However, since many browsers don't interpret it this way, even in the presence of an HTML 4.01 Strict DOCTYPE, it is best to avoid it completely in pure HTML documents and reserve its use solely for those written in XHTML.

Error Line 3, Column 71: character data is not allowed here

  <meta http-equiv="content-type" content="text/html; charset=utf-8" />



You have used character data somewhere it is not permitted to appear. Mistakes that can cause this error include:

    putting text directly in the body of the document without wrapping it in a container element (such as a <p>aragraph</p>), or
    forgetting to quote an attribute value (where characters such as "%" and "/" are common, but cannot appear without surrounding quotes), or
    using XHTML-style self-closing tags (such as <meta ... />) in HTML 4.01 or earlier. To fix, remove the extra slash ('/') character. For more information about the reasons for this, see Empty elements in SGML, HTML, XML, and XHTML.

*

metallexportprom

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
*

Лена)

  • Захожу иногда
  • 402
  • 28 / 0
Насчет конкретно этого слэша в этой строке нигде ничего не пишется. я посмотрела, что в некоторых сайтах он есть, а где-то отсутствует. самой интересно, почему так
*

metallexportprom

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Насчет конкретно этого слэша в этой строке нигде ничего не пишется. я посмотрела, что в некоторых сайтах он есть, а где-то отсутствует. самой интересно, почему так
Верно, где-то есть, а на других нет. Посмотрим, может кто чего скажет.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Насчет конкретно этого слэша в этой строке нигде ничего не пишется. я посмотрела, что в некоторых сайтах он есть, а где-то отсутствует. самой интересно, почему так
потому что есть разные типы документов HTML, XHTML и т.д. читайте спецификацию.
*

metallexportprom

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
потому что есть разные типы документов HTML, XHTML и т.д. читайте спецификацию.
У меня конкретно HTML и DOCTYPE оформлен в соответствии. А W3C выдает ошибки.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
У меня конкретно HTML и DOCTYPE оформлен в соответствии.
ну если вы уверены, что у вас HTML полностью соответствует DOCTYPE, то получается, что W3C мягко говоря не разбирается в своих же стандартах?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
ну если вы уверены, что у вас HTML полностью соответствует DOCTYPE, то получается, что W3C мягко говоря не разбирается в своих же стандартах?
по стандартам HTML одиночные теги и не должны так закрываться, вроде. :)
*

metallexportprom

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
ну если вы уверены, что у вас HTML полностью соответствует DOCTYPE, то получается, что W3C мягко говоря не разбирается в своих же стандартах?
Смена DOCTYPE на другие лишь увеличивает количество ошибок с 20 до 370.
*

metallexportprom

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
по стандартам HTML одиночные теги и не должны так закрываться, вроде. :)
А как это исправить?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Если автор уверен в DOCTYPE, и что он делает именно HTML 4.01 шаблон, то ему придется править ядро, ибо шапка рендерится вот тут: libraries\joomla\document\html\renderer\head.php, надо менять:

Код: php
$tagEnd	= ' />';
на
Код: php
$tagEnd	= '>';

Но вообще, нафига это нужно-то? Если хочется, чтобы было все красиво и по стандартам, так сверстайте его корректно и под XHML. И вообще, о какой валидации можно говорить, если страница не имеет стартового тега <HTML> и сразу за объявлением DOCTYPE идет тег <HEAD>?


 Я более того уверен, что автор шаблона не знает ни что такое "http://www.w3.org/TR/html4/loose.dtd", ни что такое "DTD HTML 4.01 Transitional". А заниматься перебором существующих DOCTYPE'ов это занятие для тех, у кого слишком много свободного времени.

по стандартам HTML одиночные теги и не должны так закрываться, вроде. :)
а я разве где-то написал обратное? я изначально усомнился в осознанности выбора типа, а если автор пишет, что тип выбран правильно и HTML полностью соответствует типу, то возникает вопрос, что кто-то заблуждается.
*

metallexportprom

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Если автор уверен в DOCTYPE, и что он делает именно HTML 4.01 шаблон, то ему придется править ядро, ибо шапка рендерится вот тут: libraries\joomla\document\html\renderer\head.php, надо менять:

Код: php
$tagEnd	= ' />';
на
Код: php
$tagEnd	= '>';

Но вообще, нафига это нужно-то? Если хочется, чтобы было все красиво и по стандартам, так сверстайте его корректно и под XHML. И вообще, о какой валидации можно говорить, если страница не имеет стартового тега <HTML> и сразу за объявлением DOCTYPE идет тег <HEAD>?


 Я более того уверен, что автор шаблона не знает ни что такое "http://www.w3.org/TR/html4/loose.dtd", ни что такое "DTD HTML 4.01 Transitional". А заниматься перебором существующих DOCTYPE'ов это занятие для тех, у кого слишком много свободного времени.
а я разве где-то написал обратное? я изначально усомнился в осознанности выбора типа, а если автор пишет, что тип выбран правильно и HTML полностью соответствует типу, то возникает вопрос, что кто-то заблуждается.

Благодарю за честный и профессиональный ответ.
Цитировать
Но вообще, нафига это нужно-то? Если хочется, чтобы было все красиво и по стандартам, так сверстайте его корректно и под XHML.
Так и нужно будет сделать.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

404 ошибка при обращении http://site.ru/index.php

Автор Oleg Inishev

Ответов: 2
Просмотров: 1649
Последний ответ 19.05.2017, 14:18:30
от SeBun
Для чего нужны пустые index.html в каждой папке?

Автор webusver

Ответов: 13
Просмотров: 11350
Последний ответ 12.11.2016, 18:23:42
от ProtectYourSite
Самостоятельно прописывается всякий бред в meta keywords

Автор Borzoid

Ответов: 13
Просмотров: 1359
Последний ответ 02.03.2016, 18:14:17
от Borzoid
Заголовки HTTP

Автор julyca

Ответов: 11
Просмотров: 2187
Последний ответ 12.07.2015, 09:56:16
от altvvc
Joomla 1.5.26 карта-сайта не отдает Content-Encoding: gzip

Автор lotosss

Ответов: 1
Просмотров: 1173
Последний ответ 09.07.2015, 15:30:06
от lotosss