Новости 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 Ответов
  • 1950 Просмотров
*

antipod

  • Захожу иногда
  • 66
  • 2 / 0
    Там сейчас только шрифты Google. У меня бесплатная версия. Платная как понял, дает любой добавить.
А вот в бесплатной как понял коллекция шрифтов для выбора формируется в файле "\plugins\system\helix3\helix3.php\helix3.php" PHP не знаю, функцию только нашел отвечающую за это, ее синтаксис для меня вААбще не понятен.
   Может подскажите?
Код
	//Add Google Font URL
foreach ($families as $key => $value)
{
$output = str_replace(' ', '+', $key);

// Weight
if($webfonts) {
$fonts_array = self::object_to_array(json_decode($webfonts)?? '{}');
$font_key = self::font_key_search($key, $fonts_array['items']);
$weight_array = $fonts_array['items'][$font_key]['variants'];
$output .= ':' . implode(',', $weight_array);
} else {
$weight = array_unique($value['weight']);
if (isset($weight) && $weight)
{
$output .= ':' . implode(',', $weight);
}
}

// Subset
$subset = array_unique($value['subset']);
if (isset($subset) && $subset)
{
$output .= '&subset=' . implode(',', $subset);
}

$doc->addStylesheet('//fonts.googleapis.com/css?family=' . $output);
}

//Add font to Selector
foreach ($selectors as $key => $value)
{

if (isset($value['family']) && $value['family'])
{

$output = 'font-family:' . $value['family'] . ', sans-serif; ';

if (isset($value['size']) && $value['size'])
{
$output .= 'font-size:' . $value['size'] . 'px; ';
}

if (isset($value['weight']) && $value['weight'])
{
$output .= 'font-weight:' . str_replace('regular', 'normal', $value['weight']). '; ';
}

$selectors = explode(',', $key);

foreach ($selectors as $selector)
{
$style = $selector . '{' . $output . '}';
$doc->addStyledeclaration($style);
}
}
}
}
*

SmiP

  • Захожу иногда
  • 264
  • 35 / 0
*

antipod

  • Захожу иногда
  • 66
  • 2 / 0
Читал я эту статью, внимательно. Блин.
Вы не подумайте чего на себя. Просто сам сильно удивился что дока на таком сайте не подходит, Ну может я сам чего не понял конечно.
   НО..
   Инструкция в первых пунктах описывает варианты для платной версии. Потом - в шаблоне нет файла stylesheet.css. Да и он на сколько понимаю гож для статического стиля.
   А в шаблоне есть возможность выбора шрифтов для любого стандартного тега, из списка штук 50.
   Я даже все CSS в шаблоне просмотрел, в них только один шрифт реально описан из папки FONT шаблона, все остальное динамическое.
*

SmiP

  • Захожу иногда
  • 264
  • 35 / 0
Adding a new font to Template - Добавление нового шрифта в шаблон
Translate:
"Позже все, что вам нужно сделать, это скопировать и вставить файлы шрифтов и внести некоторые изменения в файл custom.css. В этом примере мы объясним, как вы можете добавить собственный бесплатный шрифт AlexBrush в свой шаблон JoomShaper. Этот метод можно использовать с любым шаблоном, основанным на платформе Helix3."
*

antipod

  • Захожу иногда
  • 66
  • 2 / 0
     Да это я вчера читал тоже, в Инете есть к стати статья по ПО поводу того что далее 5го пункта не понятно. Инструкция изначально не верна. Она позволяет создать класс и использовать его в шаблоне. но ПРОПИСЫВАТЬ его в ручную. Вставлять где нужно в тегах.
     Шаблон же позволяет выбирать шрифт в настройках, если сделать по инструкции, этот шрифт можно применять, но только его и только там где прописал.
     Но этот шрифт не добавится в список настройки шаблона!
А я отел именно этого.
     Как сделать так чтобы к набору настроек шрифтов шаблона добавился мой?
*

antipod

  • Захожу иногда
  • 66
  • 2 / 0
    Я в итого просмотрел все CSS ки, и php
Это очень сложно, если все CSS в одну строку. Во всех 4 строки, и 4 строка длиной от 150т символов до 300
Так же просмотрел код сохраненной страницы.
    Получается так - если в шаблоне нет ни одной замены шрифта в тегах (ни один в настройках шаблона не указан). То на странице только один шрифт. Он прописан в CSSках, причем там только одно семейство шрифтов, файлы их есть в шаблоне. В шаблоне больше нет файлов шрифтов - ни одной ссылки ни на куда нибудь, ни в инет.
   
    Если в шаблоне я в настройках указываю - заменить шрифт тега </h2> на указанный. Он летит динамически в HTML страницы со ссылкой на Google.
    В этом разобрался, НО.....
    В списке выбора настроек шаблона нет шрифтов из CSS!
   
    В итоге получается: Если я пропишу свой в CSS, то я должен буду его в ручную прописывать. Это шаблон править самому, долго.
    Самый быстрый способ, да и самый правильный: добавить свой шрифт в список выбора в настройках.
    Пожалуста помогите а.
*

Vastriet

  • Захожу иногда
  • 405
  • 11 / 0
если вам доя н2 нужен шрифт так в стилях и укажите его с !important  и все н2 будут с ним
*

antipod

  • Захожу иногда
  • 66
  • 2 / 0
Да я понял, что это можно. Это частное решение.
   Сейчас мне нужен этот шрифт - ну добавлю. Это не так просто в неформатированной CSS, писал же там 100000 символов в строке. И как минимум в двух таких править надо.
    Это шрифт добавить только.
    Ну пропишу этот шрифт в нужном теге.  и?
 
    А завтра потребуется другой шрифт и в другом теге. И самое главное - обновлю шаблон.

    Ну проще же в одном месте исправить php. Сам бы исправил, да не умею.
*

Vastriet

  • Захожу иногда
  • 405
  • 11 / 0
custom.css  создайте и вносите правки
*

antipod

  • Захожу иногда
  • 66
  • 2 / 0
Было. 5 постами выше.
Советы по кругу?
*

web1

  • Захожу иногда
  • 351
  • 20 / 1
Здраствуйте, вот похожая тема была на форуме, возможно заинтересует Как разместить шрифт Times New Roman локально?

В Google font нету такого шрифта. У меня на joomla 3 шрифт open sans подключается, на joomla 4 — roboto. Используйте шрифты, какие есть, не выдумивайте!

В основном эти шрифты используются для заголовков h1, h2 и так далее, в общем удачи, успехов.

Шрифты от Google fonts легко подключаются, можете поюзать, посмотреть в интернете, есть даже видео уроки.
« Последнее редактирование: 29.06.2024, 19:32:02 от web1 »
*

web1

  • Захожу иногда
  • 351
  • 20 / 1
Сам шрифт от Google fonts легко добавляется, для этого в раздел <head></head> добавляем к примеру этот шрифт:

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap" rel="stylesheet">

И в CSS стили:

// <uniquifier>: Use a unique and descriptive class name
// <weight>: Use a value from 300 to 800

.open-sans-<uniquifier> {
  font-family: "Open Sans", sans-serif;
  font-optical-sizing: auto;
  font-weight: <weight>;
  font-style: normal;
  font-variation-settings:
    "wdth" 100;
}

https://fonts.google.com/

Также, можно подключать эти стили в настройках шаблона, там смотрите, там все это сделано за вас.
*

antipod

  • Захожу иногда
  • 66
  • 2 / 0
У меня получилось, в принципе я и раньше правильно делал, иногда. Кеш не чистил. Запутался.
Накидал нужных характеристику, но одно не получается.
    В статье, у некоторых ячеек указана ширина ячейку в процентах и я так понял эти данные в приоритете.
Мои данные адаптации 100% ни как не применяются.
*

Vastriet

  • Захожу иногда
  • 405
  • 11 / 0
поставьте к стилю !important
*

antipod

  • Захожу иногда
  • 66
  • 2 / 0
спасибо
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Переопределение шаблон com_content

Автор triode-master

Ответов: 10
Просмотров: 7381
Последний ответ 20.08.2025, 14:57:54
от kostet7
Не отображаться версия для ПК на android (шаблон cassiopeia)

Автор web1

Ответов: 1
Просмотров: 349
Последний ответ 05.08.2025, 17:14:31
от web1
Сделал шаблон для Joomla 5

Автор fbr

Ответов: 8
Просмотров: 1559
Последний ответ 11.07.2025, 18:00:52
от cronk
Joomla 5.2.2+Helix Ultimate Проблема с отображением Page Title

Автор catsub

Ответов: 2
Просмотров: 903
Последний ответ 20.12.2024, 05:06:13
от basn
Как добавить в Head yandex_recommendations_image?

Автор Zegeberg

Ответов: 33
Просмотров: 3132
Последний ответ 14.10.2024, 08:42:47
от sivers