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

saiskyi

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Скрипты в Joomla
« : 20.03.2014, 14:06:57 »
на тестовом мини-сайте http://dashenyka.esy.es/ на странице форума тупит скрипт. В чём
может быть причина. В основном всё работает норм. Уже задолбался. Шаблон простейший.
валидатор показал 19 ошибок. Пока  HTML код в модульной позиции<div id="topmenu"> и
работает с помощью модуля mod_flexi_customcode_v17. Может его заключить в <div id=''></div>
файла index.php?  Cкрипт лежит пока не в отдельном файле.  Но это вроде без разницы. 
Пробовал поменять в коде<body></body> на <frameset></frameset> а то как бы body в body. Не работает.
Ну короче не пойму. В web дизайне недавно.  Давно в фотошопе и короле.
 если есть мысли, то заранее спасибо...могу конечно отправить файлы, если кто
откликнется. Шаблон мой.
*

ShfVD

  • Давно я тут
  • 871
  • 65 / 0
Re: Скрипты в Joomla
« Ответ #1 : 20.03.2014, 14:30:14 »
Уж прости за назойливость (просто под руку попался второй раз), но где же
Цитировать
В основном всё работает норм
.
Скрин прилагаю, после нажатия на Форум вся красота исчезает http://bit.ly/1dsETel.
Сверстано отвратительно, типа если не знаешь умножения, добейся результата сложением.
Если интересно, пиши, подскажу дорогу.
*

saiskyi

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Скрипты в Joomla
« Ответ #2 : 23.03.2014, 21:44:06 »
вопрос закрыт.
с самого начала вся эта конструкция решена не верно. Я загнал его в модульную
позицию при помощи модуля mod_flexi_customcode_v17. Поэтому состояние роллвиров и
остального решала Joomla. Картики брались из www/site/images/ поэтому при установке
шаблона его просто нет и не должно быть. Всё решилось очень просто. Весь код
прописан в index.php вместе со криптом. Картинки берутся из templates/images как
нужно. по типа такому адресу: <img src="<?php echo $this->baseurl ?>/templates/<?php
echo $this->template ?>/images/file.png" width="" height="" alt="" border="0"
/> Всё работает как часы. Но появился ещё один прикол. Шаблон устанавливается без
проблем. Но сама ситема удаляет папку templates/images/images. Там где лежат
картинки. Сама папка лежит там куда положил.Теперь- Копируешь папку, ложишь на место
ВСЁ РАБОТАЕТ.  Не успел пока попробовать положить папку куда нибудь в другое место в
шаблоне,  как-то обозвать. Вариантов много. Нужно ещё попробовать с чистого листа
новый пользователь, бд. Но в принципе всё решено, то что замышлялось. У меня Joomla
папку удаляет(ЭТО Я ПОКА НЕ РЕШИЛ)
здесь шаблон:
http://yadi.sk/d/b7Py8deHKzkwN
если будут стоящие советы, будет огромное спасибо. Повторяю в web дизайне недавно,
пока ещё в состоянии чайника
так-что советы профи для меня за счастье. ПОЧЕМУ СИСТЕМА УДАЛЯЕТ ПАПКУ ДЛЯ МЕНЯ
ВОПРОС№1 получается я всем должен рассказать как его устанавливать...Жду советы и
критику. Особенно критику, так-как всё остальное я решу и сам.Спасибо всем кто откликнется. Новый код пока в шаблоне на локалке.
*

saiskyi

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Скрипты в Joomla
« Ответ #3 : 23.03.2014, 21:57:25 »
да про умножение. Это не то что выдумаете. По сути это меню совсем не меню, так что умножать тут нечего. Загляните в шаблон или посмотрите на картинки в FireBug. Каждый элемент имеет свою картинку. Это порезка сделана в ImageReady и доточена в дриме. И нарисовать я мог-бы что угодно, хоть весь сайт.  Всё. Тут ничего не умножается и не прибавляется. Теперь про скрин. Если бы этого, т-есть то что на скрине не было и всё работало как надо я на форум бы не писал. Но всё решилось ок. Спасибо..
*

saiskyi

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Скрипты в Joomla
« Ответ #4 : 23.03.2014, 22:06:07 »
А код я конечно должен  подчистить, это я и сам знаю. Сейчас готовлю совершенно другую работу. Стиль готика.Тут будет всё по взрослому. В принципе уже на локалке работает. стоит Flash, и т.д. Будет чисто шаблон.
*

ShfVD

  • Давно я тут
  • 871
  • 65 / 0
Re: Скрипты в Joomla
« Ответ #5 : 23.03.2014, 22:27:01 »
да про умножение. Это не то что выдумаете. По сути это меню совсем не меню, так что умножать тут нечего. Загляните в шаблон или посмотрите на картинки в FireBug. Каждый элемент имеет свою картинку. Это порезка сделана в ImageReady и доточена в дриме. И нарисовать я мог-бы что угодно, хоть весь сайт.  Всё. Тут ничего не умножается и не прибавляется. Теперь про скрин. Если бы этого, т-есть то что на скрине не было и всё работало как надо я на форум бы не писал. Но всё решилось ок. Спасибо..

Сложно объяснять человеку, который не хочет слушать. Тем не менее попробую.
Дело не в том, нравится или не нравиться, в конце концов - на вкус и цвет...
Проблема в том, что несмотря на быстрые компы, существуют медленные доступы к интернету, а самое главное боты поисковых систем ограничены в размерах загружаемых страниц, соответственно, чем больше код страницы, тем больше вероятность того, что она не будет до конца проиндексирована.
А теперь по делу.
Ваше меню должно создаваться обычным списком
<ul class="....">
    <li class="...">
     ..........
    ..........
    <li class="...">
</ul>
под li подставляем закрытые сердечки с прозрачным фоном
под li при наведении курсора подставляем открытые сердечки
вместо пустых дивов между пунктами банально ставим margin нужной ширины, вот и все.
И самое главное стили определяем в таблице стилей CSS, и убираем иэ тела шаблона
(position:absolute; left:136px; top:0px; width:17px; height:56px;)
Сделайте по такому принципу и сами увидете разницу. Тем более, что сделать нужно только классы пунктов меню, список сгенерируе Joomla в модуле меню.
впрочем Вам решать, слушать или нет
*

saiskyi

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Скрипты в Joomla
« Ответ #6 : 13.04.2014, 10:08:05 »
Добрый день хороший человек. Я прекрасно понимаю о чём вы говорите. Фишка в том, что я уже говорил. Здесь нет никаких списков. Это html+php конструкция. HTML собран в строку. Без подключения CSS. Есть такой метод. А Обработка кода PHP производится на сервере, а не в браузере . Телефон очень даже быстро загружает сайт с киевстара. Сейчас у меня вопросов вообще никаких нет. Загляните в эти два шаблона- http://yadi.sk/d/jrqmS2C7MNLNb Всё устанавливается махом из менеджера расш. и всё работает. Пока код сыроват, но это не проблема. В другом также работает flash.
 повторяю мне не важно что нарисовать. Хоть черти будут бегать по всему сайту
конструкция с сердечками здесь (ВСЁ РАБОТАЕТ ПРЕКРАСНО):
  <div id="serdechki">
      <body onload="preloadImages();" style="">
<div style="position:absolute; left:0px; top:0px; width:1000px; height:56px;">
   <div style="position:absolute; left:0px; top:0px; width:31px; height:56px;">
      <img id="id111" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/111.gif" width="31" height="56" alt="" />
   </div>
   <div style="position:absolute; left:31px; top:0px; width:105px; height:56px;">
      <a href="#"
         onmouseover="changeImages('id222', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/161616.gif'); return true;"
         onmouseout="changeImages('id222', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/222.gif'); return true;"
         onmousedown="changeImages('id222', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/161616.gif'); return true;"
         onmouseup="changeImages('id222', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/161616.gif'); return true;">
         <img name="id222" id="id222" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/222.gif" width="105" height="56" border="0" alt="" /></a>
   </div>
   <div style="position:absolute; left:136px; top:0px; width:17px; height:56px;">
      <img id="id333" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/333.gif" width="17" height="56" alt="" />
   </div>
   <div style="position:absolute; left:153px; top:0px; width:104px; height:56px;">
      <a href="#"
         onmouseover="changeImages('id444', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/171717.gif'); return true;"
         onmouseout="changeImages('id444', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/444.gif'); return true;"
         onmousedown="changeImages('id444', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/171717.gif'); return true;"
         onmouseup="changeImages('id444', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/171717.gif'); return true;">
         <img name="id444" id="id444" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/444.gif" width="104" height="56" border="0" alt="" /></a>
   </div>
   <div style="position:absolute; left:257px; top:0px; width:17px; height:56px;">
      <img id="id555" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/555.gif" width="17" height="56" alt="" />
   </div>
   <div style="position:absolute; left:274px; top:0px; width:105px; height:56px;">
      <a href="#"
         onmouseover="changeImages('id666', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/181818.gif'); return true;"
         onmouseout="changeImages('id666', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/666.gif'); return true;"
         onmousedown="changeImages('id666', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/181818.gif'); return true;"
         onmouseup="changeImages('id666', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/181818.gif'); return true;">
         <img name="id666" id="id666" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/666.gif" width="105" height="56" border="0" alt="" /></a>
   </div>
   <div style="position:absolute; left:379px; top:0px; width:13px; height:56px;">
      <img id="id777" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/777.gif" width="13" height="56" alt="" />
   </div>
   <div style="position:absolute; left:392px; top:0px; width:106px; height:56px;">
      <a href="#"
         onmouseover="changeImages('id888', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/191919.gif'); return true;"
         onmouseout="changeImages('id888', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/888.gif'); return true;"
         onmousedown="changeImages('id888', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/191919.gif'); return true;"
         onmouseup="changeImages('id888', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/191919.gif'); return true;">
         <img name="id888" id="id888" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/888.gif" width="106" height="56" border="0" alt="" /></a>
   </div>
   <div style="position:absolute; left:498px; top:0px; width:16px; height:56px;">
      <img id="id999" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/999.gif" width="16" height="56" alt="" />
   </div>
   <div style="position:absolute; left:514px; top:0px; width:104px; height:56px;">
      <a href="#"
         onmouseover="changeImages('id101010', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/202020.gif'); return true;"
         onmouseout="changeImages('id101010', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/101010.gif'); return true;"
         onmousedown="changeImages('id101010', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/202020.gif'); return true;"
         onmouseup="changeImages('id101010', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/202020.gif'); return true;">
         <img name="id101010" id="id101010" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/101010.gif" width="104" height="56" border="0" alt="" /></a>
   </div>
   <div style="position:absolute; left:618px; top:0px; width:18px; height:56px;">
      <img id="id111111" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/111111.gif" width="18" height="56" alt="" />
   </div>
   <div style="position:absolute; left:636px; top:0px; width:105px; height:56px;">
      <a href="#"
         onmouseover="changeImages('id121212', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/212121.gif'); return true;"
         onmouseout="changeImages('id121212', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/121212.gif'); return true;"
         onmousedown="changeImages('id121212', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/212121.gif'); return true;"
         onmouseup="changeImages('id121212', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/212121.gif'); return true;">
         <img name="id121212" id="id121212" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/121212.gif" width="105" height="56" border="0" alt="" /></a>
   </div>
   <div style="position:absolute; left:741px; top:0px; width:18px; height:56px;">
      <img id="id131313" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/131313.gif" width="18" height="56" alt="" />
   </div>
   <div style="position:absolute; left:759px; top:0px; width:105px; height:56px;">
      <a href="#"
         onmouseover="changeImages('id141414', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/222222.gif'); return true;"
         onmouseout="changeImages('id141414', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/141414.gif'); return true;"
         onmousedown="changeImages('id141414', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/222222.gif'); return true;"
         onmouseup="changeImages('id141414', '<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/222222.gif'); return true;">
         <img name="id141414" id="id141414" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/141414.gif" width="105" height="56" border="0" alt="" /></a>
   </div>
   <div style="position:absolute; left:864px; top:0px; width:136px; height:56px;">
      <img id="id151515" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/images/images/151515.gif" width="136" height="56" alt="" />
   </div>
</div>
</body>
     </div>
« Последнее редактирование: 13.04.2014, 21:10:15 от saiskyi »
*

saiskyi

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Скрипты в Joomla
« Ответ #7 : 13.04.2014, 12:04:08 »
p.s Этим методом дизайна я легко могу сделать:1. все картинки разные 2.При наведении будет появлятся какая нибудь gif анимация причем у всех разная 3. Будут раздаваться щелчки. А при нажатии ещё что нибудь(может взрыв) пока не придумал. Какие могут быть списки или создание простейших HTML меню. Такие типа меню устанавливаются на самом конструкторе Joomla с помощью готовых модулей меню в модульную позицию. или артистером при создании шаблона(тоже бред). Какой дурак воткнет такое рукописное меню в сам шаблон.Залезте в файлы. Блин или я америку открыл...Моя задача сделать шаблон, который устанавливался в мен. расшир. И все фишки типа(gif, flash,sj и т.д) сразу начали бы работать без участия конструктора. Я не делаю quickstart-вый шаблон, куда можно напихать всё что хочешь.И я это сделал. Попробуйте установить хотя-бы один 2мин. делов
« Последнее редактирование: 13.04.2014, 12:31:01 от saiskyi »
*

saiskyi

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Скрипты в Joomla
« Ответ #8 : 13.04.2014, 21:04:59 »
перезалил файлы-http://yadi.sk/d/jrqmS2C7MNLNb
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Простенький калькулятор одной функции на JS (не Joomla)

Автор Dorfman

Ответов: 10
Просмотров: 993
Последний ответ 23.11.2020, 13:39:14
от sivers
Как получить объект с полной информацией о материале через API Joomla? [РЕШЕНО]

Автор dm-krv

Ответов: 4
Просмотров: 1268
Последний ответ 03.08.2019, 16:30:51
от dm-krv
Как создавать мультиязычные статьи скриптом php в Joomla?

Автор SalityGEN

Ответов: 9
Просмотров: 1069
Последний ответ 02.03.2019, 13:33:41
от SalityGEN
Устройство конструкций php кода в Joomla и документация

Автор RTEagle

Ответов: 4
Просмотров: 1295
Последний ответ 08.05.2018, 13:09:32
от RTEagle
Перенести сайт с Magento на Joomla как можно быстрее?

Автор MasterFloma

Ответов: 6
Просмотров: 1264
Последний ответ 28.04.2018, 06:30:30
от Taatshi