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

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Здравствуйте.
Создал небольшой сайт на Joomla и задался таким вопросом.
Сейчас на сайте 2 колонки, слева располагаются различные модули и компоненты (поиск, меню, авторизация), справа основной контент.
Существует ли в природе, так называемый, текстовый компонент? То есть такой модуль, который я смог бы вставить, скажем слева под авторизацией, наполнив его каким-то произвольным текстом. Или произвольный текст можно написать только правя код шаблона вручную.
Грубо говоря, мне нужна возможность выводить определенный текст в определенное место на сайте (и это место не общее окно с контентом).
*

tefun

  • Живу я здесь
  • 2540
  • 130 / 1
  • Легче всего обмануть себя
выбираешь создать модули > создать произвольный код HTML там вводишь то что тебе надо > назначаем позоцию у себя на сайте

домен.ru/?tp=1  смотришь какие позиции модулей у тебя есть в шаблоне
то что постится на фОруме, не вырубается тапОрами
_______________________________________________
Мысли и женщины вместе не приходят М.Ж.
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
спасибо, попробую
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Добавил новый модуль с произвольным кодом HTML в позицию left. Но появилась проблемка: фон этого модуля автоматически залился тем же цветом по умолчанию, что и остальные модули. Как правильно поступить в этой ситуации, править таблицу стилей и создавать класс отдельно для нового модуля или есть еще варианты?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Для модуля можно прописать суффикс. он добавится ко всем классам, определяющим стиль этого модуля. А дальше уже через CSS украшать. FireBug Вам в помощь.
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
А не подскажите где прописать этот суффикс? В расширенных параметрах модуля? Сейчас там пусто.
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Разобрался...
Нашел при помощи Google Chrome место в файле CSS, где отображаются фоны модулей.
.white { border-radius:16px; webkit-border-radius:16px; color: #333; background-color: #f9f9f9; margin: 0 auto 10px; padding: 5px 10px; position: relative; }
Меняю background-color и цвет всех модулей меняется.
Теперь создал .white_123 { border-radius:16px; webkit-border-radius:16px; color: #333; background-color: #000000; margin: 0 auto 10px; padding: 5px 10px; position: relative; }
поменял цвет, а в свойствах модуля прописал _123.
Но ничего не изменилось. Что я сделал не так?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
по идее все так... проверьте еще раз... посмотрите в FireBug зименились ли стили...
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Кстати да, стили не заменились. При выделении фрагмента сайта вновь указывается на .white
Почему такое могло произойти?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
1) Проверьте еще раз, что вписали в поле суффикс модуля.
2) Очистите кеш J! ну и кеш браузера на всякий случай.
3) Попробуйте _asd например задать =)
4) Модуль произвольный HTML используется?
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #10 : 22.02.2012, 22:43:15 »
1) _123
2) очистка кэша Joomla не помогло, пробовал несколько браузеров
3) _asd попробовал - тоже не помогло :)
4) модуль произвольный HTML
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #11 : 22.02.2012, 23:20:16 »
Стоп! Суффикс модуля же приписывается к классу module. И все. Вам надо как то так:
Код
div.module_123 .white { ...}
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #12 : 22.02.2012, 23:23:08 »
а какова конечная цель? А нельзя прямо в редакторе в модуле прописать <div class="такой-то"> и уже ему стили задавать?
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #13 : 22.02.2012, 23:40:06 »
А что если у меня нет div class="module"
Я вот по этой инструкции действовал http://www.yachaynik.ru/sozdanie-saytov/suffiks-klassa-modulya-v-joomla-ili-kak-sozdat-svoy-unikalniy-modul
И когда выбираю посмотреть код элемента внизу вылезает div class="white". Я нахожу в CSS .white { border-radius:16px; webkit-border-radius:16px; color: #333; background-color: #f9f9f9; margin: 0 auto 10px; padding: 5px 10px; position: relative; }, где background-color: #f9f9f9 отвечает за фон модуля.
Куда мне нужно подписать _new? (суффикс класса модуля)
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #14 : 23.02.2012, 18:31:29 »
Разобрался с суффиксами. Все применяется и работает. Но есть другая проблема :)
Серый фон заливки (как у всех модулей) остался, а в него уже вписался новый блок с моей заливкой.
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #15 : 23.02.2012, 19:24:54 »
Разобрался.
Это произошло из-за того, что запись <div class="white_asd"> была сделана в теле HTML кода модуля. То есть как бы класс в классе получается. А вот суффикс непосредственно к модулю по-прежнему не применяется :(
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #16 : 23.02.2012, 20:15:02 »
выложите html-код этого участка... а div class="module" по идее должен быть, но тут много от чего зависит... или приведите участок кода или выложите сайт куда-нибудь..
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #17 : 23.02.2012, 20:44:09 »
Нажимаю правой кнопкой по новому модулю, получаю кусок кода <div class="white">1</div> (в новом модуле цифру 1 поставил просто). В правой части экрана, где CSS отображается вылезает следующий код:

.white {
color: #333;
background-color: #F9F9F9;
margin: 0 auto 10px;
padding: 5px 10px;
position: relative;
}

Если в CSS файле сделать поиск по .white, то получаем следующее:

.white { color: #333; background-color: #f9f9f9; margin: 0 auto 10px; padding: 5px 10px; position: relative; }
.white:hover {
   color: #333;
   background-color: #f1f1f1;
 
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#f1f1f1), to(#fff));
background: -moz-linear-gradient(#f1f1f1, #fff);
-pie-background: linear-gradient(#f1f1f1, #fff);   

}
.white h3,.noshadow h3
{ margin: -4px -9px 5px; padding: 2px 2px 2px 27px; font-size: 100%; font-weight: bold; line-height: 26px; background: #f0f1f1 url(../images/h3div.gif) no-repeat left center; text-transform: capitalize; }
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #18 : 23.02.2012, 22:19:17 »
А до <div class="white">1</div> какие теги идут? проще по-моему залить вам сайт куда-нибудь, а мы посмотрим что напилить можно. Надоело гадать...
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #19 : 23.02.2012, 22:30:36 »
Выложить, к сожалению, некуда пока, нет хостинга
Но выложу скриншот сайта в Chrome с открытым окном внизу, где указан код модуля, который находится слева с цифрой 1. Мне нужно заливку этого блока сделать другого цвета.
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #20 : 29.02.2012, 19:06:53 »
ну что, никто не сможет помочь? :(
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #21 : 29.02.2012, 20:38:47 »
О, а я и забыл о Вашем топике. Да выложите уже на какой-нибудь тестовый сервачок. Куча хостингов предоставляют 10 дней на халяву. Так проще. Ну не привык я телепатически решать такие вопросы. Приведите для начала код Index.php шаблона вашего. Чую оттуда надо начать
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #22 : 29.02.2012, 22:42:00 »
Вот, выкладываю сайт
http://onetest.hdd1.ru/
Слева, под главным меню, где цифра 1 нужно залить другим цветом.
Это произвольный HTML код c суффиксом класса модуля _asd. В файле CSS создал класс .white_asd {...}
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #23 : 29.02.2012, 23:41:47 »
там у Вас нестандартный вывод модуля я так понимаю. Вы шаблон купили или скачали где? Можете мне выслать или в личку дать доступ до фтп-сервера. Так просто не сообразишь. Если я правильно понимаю,то надо дописать подставление суффикса модуля
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #24 : 29.02.2012, 23:46:06 »
Выслал в личку.
Шаблон покупал...
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #25 : 01.03.2012, 00:19:19 »
Итак:

1) В папке Шаблона в папке HTML есть файл modules.php. Открываете его.

2) Ищете функцию function modChrome_light($module, &$params, &$attribs)

3) Там строка (примерно 74)
Код
<div class="white">
заменяете на
Код
<div class="white<?php echo $params->get('moduleclass_sfx'); ?>">

и радуетесь)) Сейчас там на фтп я внес необходимые изменения. Можете просто скачать этот файл и заменить у себя на локалке.
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #26 : 01.03.2012, 00:28:23 »
спасибо :)
только проблемка, там сбилась настройка стиля заголовка верхнего модуля "главное меню".
и вообще, серая заливка главного меню исчезла
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #27 : 01.03.2012, 00:33:32 »
А вы в код загляните)) у вас у модуля меню стоит суффикс _menu. удалите его и все
Ну думаю + я точно заслужил)))
*

tefun

  • Живу я здесь
  • 2540
  • 130 / 1
  • Легче всего обмануть себя
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #28 : 01.03.2012, 00:36:51 »
Ну думаю + я точно заслужил)))
сам себя не похвалишь, никто не похвалит ;D
то что постится на фОруме, не вырубается тапОрами
_______________________________________________
Мысли и женщины вместе не приходят М.Ж.
*

Hleb

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Есть ли такой текстовый модуль Joomla?
« Ответ #29 : 01.03.2012, 00:39:15 »
А вы в код загляните)) у вас у модуля меню стоит суффикс _menu. удалите его и все
Ну думаю + я точно заслужил)))
спасибо, все получилось. Только вопросик, не подскажите где именно в коде видно, что у модуля меню стоит суффикс _menu и почему его удаление привело к исправлению ситуации? Ведь раньше до изменений в modules.php все отображалось правильно :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 1.5 как убрать кнопку редактировать материант с сайта

Автор andriy465

Ответов: 5
Просмотров: 3661
Последний ответ 12.11.2023, 23:37:03
от all_zer
У вас есть любимые места развлечений?

Автор Валюшка67

Ответов: 0
Просмотров: 2420
Последний ответ 06.06.2023, 23:55:03
от Валюшка67
Нужно wiki под Joomla

Автор THE KILLERS

Ответов: 9
Просмотров: 9549
Последний ответ 05.11.2020, 20:56:47
от Kijv
Поиск статьи по url сайта в админке Joomla 1.5

Автор Tema

Ответов: 5
Просмотров: 2043
Последний ответ 14.08.2020, 07:16:44
от rsn
модуль Newsflash: как вывести дату?

Автор joomloid

Ответов: 5
Просмотров: 3589
Последний ответ 03.04.2019, 12:25:27
от pH43