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

Severus

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Здравствуйте, уважаемые!
Задача: в графическом хедере "оживить большие нарисованные кнопки", привязав их по смыслу к уже действующим пунктам меню, другими словами, дублирующие их.
Делал так, скорее всего неправильно:
В Dreamweaver открыл файл  index.php шаблона.
В него вставил header.jpg
Затем, с помощью Hotspot tool, выделил зоны кнопок и прописал для них url, взяв их из соответствующих пунктов меню.
Сохранил и...  :(

Как правильно делать? Может я не в тот файл полез? 
*

valagoff

  • Давно я тут
  • 984
  • 110 / 0
Re: Добавление кнопки в хедер
« Ответ #1 : 14.05.2010, 03:42:32 »
Ссылку выложи.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Добавление кнопки в хедер
« Ответ #2 : 14.05.2010, 08:47:19 »
"оживить большие нарисованные кнопки"
так вроде данный вариант ничего не оживит :)
можешь просто нарезать графических кнопочек в статичном и наведённом вариантах, вставить их как фоны через классы CSS и через эти же классы менять изображения при наведении на элемент.
*

Severus

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Добавление кнопки в хедер
« Ответ #3 : 14.05.2010, 09:27:33 »
К сожалению, сайт в зачаточном состоянии на локальном сервере.
Могу выложить исходный код страницы.


Добавленый блок с кнопками выделен жирно.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" >
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="robots" content="index, follow" />
  <meta name="keywords" content="joomla, Joomla" />
  <meta name="title" content="Главная" />
  <meta name="author" content="Administrator" />
  <meta name="description" content="Joomla! - the dynamic portal engine and content management system" />
  <meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />

  <title>Главная</title>
  <script type="text/javascript" src="/obrazec/media/system/js/mootools.js"></script>
  <script type="text/javascript" src="/obrazec/media/system/js/caption.js"></script>


<link rel="stylesheet" href="/obrazec/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="/obrazec/templates/siteground-j15-38/css/template.css" type="text/css" />

</head>
<body id="page_bg">
   <div id="top">

      <div class="pill_m">
         <div id="pillmenu">
            <ul class="menu"><li id="current" class="active item13"><a href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=1&amp;Itemid=13"><span>Главная</span></a></li><li class="item14"><a href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=6&amp;Itemid=14"><span>Вся авиация</span></a></li><li class="item15"><a href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=7&amp;Itemid=15"><span>Ссылки</span></a></li><li class="item16"><a href="/obrazec/index.php?option=com_virtuemart&amp;Itemid=16"><span>Наш магазин</span></a></li></ul>
         </div>
      </div>   
   </div>
     <div id="header">

   
   <img src="/obrazec/images/header.jpg" width="926" height="260" border="0" usemap="#Map" />
   
  <map name="Map" id="Map">
      <area shape="rect" coords="50,60,211,133" href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=1&amp;Itemid=13" />
      <area shape="rect" coords="413,164,577,231" href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=7&amp;Itemid=13" />
    <area shape="rect" coords="670,128,831,196" href="/obrazec/index.php?option=com_virtuemart" />
    </map>

   
<div id="logo">
     <a href="/obrazec/index.php">Авиатор</a>

    </div>   
</div>
   <div class="clr"></div>
   
   <div class="center">      
      <div id="wrapper">
         <div id="inner_shadows">   
            <div id="content">
               <div id="leftcolumn">   
                        <div class="module_menu">
         <div>
            <div>

               <div>
                                       <h3>Главное меню</h3>
                                 
<ul class="menu">
   <li class="item2">
      <a href="http://localhost/obrazec/">
         <span>Главная</span>
      </a>
   </li>

   <li class="item3">
      <a href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=6&amp;Itemid=3">
         <span>Вся авиация</span>
      </a>
   </li>
   <li class="parent item6">
      <a href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=2&amp;Itemid=6">
         <span>Новости</span>

      </a>
   </li>
   <li class="item7">
      <a href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=7&amp;Itemid=7">
         <span>Ссылки</span>
      </a>
   </li>
   <li class="item10">

      <a href="/obrazec/index.php?option=com_content&amp;view=article&amp;id=8&amp;Itemid=10">
         <span>Контакты</span>
      </a>
   </li>
   <li class="item12">
      <a href="/obrazec/index.php?option=com_virtuemart&amp;Itemid=12">
         <span>Наш магазин</span>
      </a>

   </li>
</ul>               </div>
            </div>
         </div>
      </div>
         <div class="module_menu">
         <div>
            <div>
               <div>

                                       <h3>Наш магазин</h3>
                                 
          <a title="Hand Tools" style="display:block;" class="mainlevel" href="/obrazec/index.php?page=shop.browse&amp;category_id=1&amp;option=com_virtuemart&amp;Itemid=12" >Hand Tools</a>
          <a title="Power Tools" style="display:block;" class="mainlevel" href="/obrazec/index.php?page=shop.browse&amp;category_id=2&amp;option=com_virtuemart&amp;Itemid=12" >Power Tools</a>
          <a title="Garden Tools" style="display:block;" class="mainlevel" href="/obrazec/index.php?page=shop.browse&amp;category_id=3&amp;option=com_virtuemart&amp;Itemid=12" >Garden Tools</a><table cellpadding="1" cellspacing="1" border="0" width="100%">
    <tr>
      <td colspan="2"><br />
          <a href="/obrazec/index.php?page=shop.browse&amp;category=&amp;option=com_virtuemart&amp;Itemid=12">

          List All Products          </a>
      </td>
    </tr>
   
  <!--BEGIN Search Box -->
  <tr>
    <td colspan="2">
     <hr />
      <label for="shop_search_field">Product Search</label>
      <form action="http://localhost/obrazec/index.php" method="get">

        <input id="shop_search_field" title="Search" class="inputbox" type="text" size="12" name="keyword" />
        <input class="button" type="submit" name="Search" value="Search" />
      <input type="hidden" name="Itemid" value="13" />
      <input type="hidden" name="option" value="com_virtuemart" />
      <input type="hidden" name="page" value="shop.browse" />
     </form>
        <br />
        <a href="/obrazec/index.php?option=com_virtuemart&amp;page=shop.search&amp;Itemid=12">
            Advanced Search        </a>        <hr />

    </td>
  </tr>
  <!-- End Search Box -->
    <tr>
        <td colspan="2">
           <a href="/obrazec/index.php?page=shop.cart&amp;option=com_virtuemart&amp;Itemid=12" title="Show Cart" class="mainlevel">Show Cart</a>      </td>
    </tr>
    <tr>

        <td colspan="2" class="vmCartModule">
              
    <div style="margin: 0 auto;">
    Your Cart is currently empty.    </div>
<div style="float: left;" >
</div>
<div style="float: right;">
</div>
        </td>
    </tr>
           
</table>

               </div>
            </div>
         </div>
      </div>
   
                  <div style="width:137px;text-align:center;margin:0 auto;">
<br />
<table style="width:137px;text-align:center;" cellpadding="0" cellspacing="0">
   <tr>
      <td><font class="sgf1">Designed by:</font></td>

   </tr>
</table>
<table style="width:137px;height:16px;text-align:center;border:none;" cellpadding="0" cellspacing="0">
   <tr>
      <td><img src="/obrazec/templates/siteground-j15-38/images/banner_01.jpg" style="width:28px;height:16px;" alt="SiteGround web hosting" title="SiteGround web hosting" /></td>
      <td width="2" height="16"></td>
      <td style="background:url(templates/siteground-j15-38/images/banner_02.jpg);width:107px;height:16px;text-align:center;">
         <a href="http://www.siteground.com/joomla-hosting/joomla-templates.htm" style="font-size: 10px; font-family: Verdana,Arial,Helvetica,sans-serif; color: #333333;text-decoration:none;">Joomla Templates</a>
      </td>

   </tr>
</table>
</div> 
               </div>
               
               <div id="maincolumn">   
                  <div class="nopad">
                                             <table class="contentpaneopen">
<tr>
      <td class="contentheading" width="100%">
               Главная         </td>
            
            <td align="right" width="100%" class="buttonheading">

      <a href="/obrazec/index.php?view=article&amp;id=1%3A2010-03-16-20-23-32&amp;tmpl=component&amp;print=1&amp;page=&amp;option=com_content&amp;Itemid=13" title="Печать" onclick="window.open(this.href,'win2','status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no'); return false;" rel="nofollow"><img src="/obrazec/images/M_images/printButton.png" alt="Печать"  /></a>      </td>
      
            <td align="right" width="100%" class="buttonheading">
      <a href="/obrazec/index.php?option=com_mailto&amp;tmpl=component&amp;link=aHR0cDovL2xvY2FsaG9zdC9vYnJhemVjL2luZGV4LnBocD9vcHRpb249Y29tX2NvbnRlbnQmdmlldz1hcnRpY2xlJmlkPTE6MjAxMC0wMy0xNi0yMC0yMy0zMiZJdGVtaWQ9MTM=" title="E-mail" onclick="window.open(this.href,'win2','width=400,height=300,menubar=yes,resizable=yes'); return false;"><img src="/obrazec/images/M_images/emailButton.png" alt="E-mail"  /></a>      </td>
               </tr>
</table>

<table class="contentpaneopen">



<tr>

<td valign="top">
Кто из нас ни разу не мечтал пилотировать самолет — возможно, в детстве,  пусть совсем недолго, но зато - по-настоящему? Ощутить контроль над  этим сложнейшим механизмом, испытать это чудо... эту необъяснимую,  переполняющую, легендарную свободу полета?.. Вы помните? И как жаль было  осознавать, что, оказывается, стать пилотами могут лишь немногие — те,  кто готов заниматься только этим и ничем другим. Те, кто выбрал небо — и  те, кого выбрало оно...

</td>
</tr>

</table>
<span class="article_separator">&nbsp;</span>

                                       </div>
               <div class="clr"></div>
            </div>
         </div>
      </div>

      <div id="content_bottom"></div>         
   </div>   
   
   </div>
   
   <div id="footer">
      <p>
         Valid <a href="http://validator.w3.org/check/referer">XHTML</a> and <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a>.
      </p>
      <div id="sgf">

             Авиатор, Powered by <a href="http://joomla.org/" class="sgfooter" target="_blank">Joomla!</a> and designed by SiteGround <a href="http://www.siteground.com/" target="_blank" class="sgfooter">web hosting</a>
       </div>
   </div>   
</body>
</html>
 


*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Добавление кнопки в хедер
« Ответ #4 : 14.05.2010, 09:34:39 »
сотри это порно :)

вот с ходу пример с реализацией трёх разных способов, открывай страницу и смотри исходный код.
http://www.mitlex.ru/files/examples/button-background/
*

Severus

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Добавление кнопки в хедер
« Ответ #5 : 14.05.2010, 09:56:38 »
Спасибо за ссылку. Очень полезно. Но я говорю немного о другом. Как сделать меняющимися стандартные кнопки пунктов меню, я догадывался.
Вопрос как раз в том, чтобы в произвольных местах хедера в хаотичном порядке была возможность расположить пункты меню.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Добавление кнопки в хедер
« Ответ #6 : 14.05.2010, 10:13:05 »
эээ
т.е тебе надо модуль с меню в топ засунуть?
в общем, у тебя есть само меню и модуль, который это меню выводит.
ты можешь дублировать этот модуль через менеджер модулей, приписать к нему собственный суффикс класса модуля и с ним извращаться. но пункты будут идти так же, как и в основном.
ну, т.е ты моешь их горизонтально сделать через настройки модуля.

+ можешь создать новое меню и к нему же новый модуль. и в этом меню уже тасовать пункты
*

Severus

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Добавление кнопки в хедер
« Ответ #7 : 14.05.2010, 10:32:47 »
Модуль с меню в топ засунуть? Я об этом не думал. Если не получится по моему, то попробую Ваше предложение.
Я же хотел, выбрав произвольный по форме, размеру и местоположению участок изображения в хедере, превратить его в кнопку со ссылкой на раздел или страницу сайта.
Ведь если создать в блокноте простейший, из трех-четырех  страничек сайт, даже без CSS, а на первой странице выложить картинку, порезанную на кнопки, в которых определены url остальных страниц этого мини-сайта, то такое графическое меню начинает работать.
   Теперь вопрос: куда в Joomla сунуть такую картинку-меню? Хотелось бы в хедер. А поточнее, в какой файл сайта? Я пытался в index.php шаблона.
   не работает. Или что-то не так сделал.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Добавление кнопки в хедер
« Ответ #8 : 14.05.2010, 10:42:54 »
а.. так "хаотичном порядке" подразумевало таки произвольный участок картинки? )))
тогда в шаблон монтировать.
да, index.php шаблона.
картинку в папку images шаблона, а вот это

 <img src="/obrazec/images/header.jpg" width="926" height="260" border="0" usemap="#Map" />
заменить на

<img src="<?php echo $this->baseurl ?>/templates/папка_шаблона/images/header.jpg" width="926" height="260" border="0" usemap="#Map" />
*

Severus

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Добавление кнопки в хедер
« Ответ #9 : 14.05.2010, 10:47:39 »
Спасибо большое. Ещё не проверил, но чую, мы сейчас говорим об одном и том же. ;D
Вечером проверю, отпишусь.
*

Severus

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Добавление кнопки в хедер
« Ответ #10 : 15.05.2010, 00:26:09 »
2 effrit
Спасибо, все получилось, все заработало как надо!  *DRINK*
Считаю этот способ простейшим и эффективнейшим приемом, позволяющим легко видоизменять дизайн сайта. У нас получился интерактивный хедер.
Новичкам на заметку!  ;)
*

zhenis

  • Новичок
  • 8
  • 0 / 0
Re: Добавление кнопки в хедер
« Ответ #11 : 15.05.2010, 02:19:11 »
Спасибо, щас же попробую.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как русифицировать кнопки "more" и "show all"? В модуле SP Portfolio?

Автор marmax

Ответов: 12
Просмотров: 7349
Последний ответ 15.11.2020, 14:30:58
от RomaFokin
как сделать кнопки меню!

Автор Millenium_3000

Ответов: 10
Просмотров: 11365
Последний ответ 17.08.2017, 17:24:12
от Intrande
Как поменять шаблон нажатием кнопки на сайте(не в админке)?

Автор natashalina

Ответов: 20
Просмотров: 6463
Последний ответ 01.09.2014, 06:46:26
от natashalina
Как вставить кнопки социальных сетей в шапку каждой новой новости?

Автор ChupVulf

Ответов: 4
Просмотров: 3007
Последний ответ 07.12.2013, 00:11:57
от ChupVulf
Добавление позиции в шаблон

Автор Alukard

Ответов: 4
Просмотров: 1835
Последний ответ 05.12.2012, 03:47:20
от Alukard