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

Maiker2k3

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Менюшка в Joomle
« : 05.05.2012, 23:37:41 »
Привет всем,

помогите пожалуйста у меня Joomla 1.7.3 стоит на Denwerе и есть моя менюшка которая написанная в HTML и css

подскажите пожалуйста можт кто знает или задавались вопросами такими, как мне мою менюшку вставить в Joomlу  и чтобы кнопки работали и добавлялись  когда я в joomle их создаю.

хеллп плз можт есть какой по этой тематеке мануал или еще чего очень нужно хееелп!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Менюшка в Joomle
« Ответ #1 : 06.05.2012, 06:19:49 »
Ну если меню сверстано правильно, тоесть <ul><li> тегами то делается просто. Для начала если стили подвязаны по css-классу, то поменяйте его на .menu. Если по id - то ничего не меняйте.
Замените свое меню <ul><li>..</li></ul> на <jdoc:include type="modules" name="menu" style="none" /> и опубликуйте модуль меню в позиции menu. Если нужно - пропишите свой айдишник  в параметрах модуля.
Если у вас разметка отличается и не представляется возможным ее подогнать под стандартную - перекрывайте макет меню (ищите инфу по template overrides)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Maiker2k3

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Менюшка в Joomle
« Ответ #2 : 06.05.2012, 13:42:17 »
<jdoc:include type="modules" name="primer-topmenu" style="xhtml" /> у меня такая мне  ее вставлять везде вместо  где <ul><li>..</li></ul> ?

перекрывайте макет меню (ищите инфу по template overrides) что то я не понял это что имеется ввиду ? а template overrides это какойто плагин который устанавливается в joomlu ?
*

Maiker2k3

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Менюшка в Joomle
« Ответ #3 : 06.05.2012, 13:49:23 »
<body>
<div>

<div id="s1">
<div id="wrapper">

   <div id="header">
      <div id="logotip"></div>
     <div id="logotip2"></div>
      <div id="topmenu">
      <jdoc:include type="modules" name="primer-topmenu" style="xhtml" />
     </div>
</div>
   


   <div id="middle">
<div id="middle1">
      <div id="container">
         <div id="content">
            <jdoc:include type="message" />
                 <jdoc:include type="component" />
         </div><!-- #content-->
      </div><!-- #container-->
</div>

      <div class="sidebar" id="sideRight">
      <div id="middle2">
       
         <jdoc:include type="modules" name="p-serch" style="xhtml" />
            <jdoc:include type="modules" name="p-news" style="xhtml" />
           
      </div><!-- .sidebar#sideRight -->
</div>
   </div><!-- #middle-->

</div><!-- #wrapper -->
<br></br> <br></br>
<div id="footer">
   
   <jdoc:include type="modules" name="primer-footer" style="xhtml" />

  </div><!-- #footer -->
</div>
</div>
</div>
</body>


 вот так у меня выглядит мой php код, без моей менюшки
а вот HTML моей менюшки и что на что менять и что куда добавить ? мучаюсь уже неделю не как сделатать не могу=(


<body id="page" class="page sidebar-a-right sidebar-b-right isblog ">

   <div id="page-bg">
   
      <div id="page-bg2">

                  
         <div id="block-toolbar">
         
            <div class="wrapper">
               
               <div id="toolbar" class="grid-block">
            
                                       
                                 
               </div>
               
            </div>
            
         </div>
         
         <div class="wrapper grid-block">
      
            <header id="header">
      
               <div id="headerbar" class="grid-block">
               
                                    
               </div>
      
               <div id="menubar" class="grid-block">
                  
         <nav id="menu">
            <ul class="menu menu-dropdown">
            <li class="level1 item321 active current">
            <a href="index.htm"  class="level1 active current">
            <span>Admin</span>
            </a></li>
            <li class="level1 item361">
            <a href="community.htm"  class="level1">
            <span> Admin</span>
            </a></li>
            <li class="level1 item361">
            <a href="community.htm"  class="level1">
            <span>Admin</span>
            </a></li>
            <li class="level1 item384">
            <a href="staff-list.htm" class="level1">
            <span>Admin</span>
            </a></li>
            <li class="level1 item158 parent">
            <a href="courses.htm" class="level1 parent">
            <span>Admin</span>
            </a>
            <div class="dropdown columns1">
            <div class="dropdown-bg">
            <div>
            <div class="width100 column">
            <ul class="level2">
            <li class="level2 item373">
            <a href="course-list.htm" class="level2">
            <span>Admin</span>
            </a></li>
            <li class="level2 item176">
            <a href target="_blank" class="level2">
            <span>Admin</span>
            </a></li>
            <li class="level2 item160">
            <a href target="_blank" class="level2">
            <span>Admin</span>
           
            </a></li></ul></div></div></div></div></li>
           
            <li class="level1 item172 parent">
            <a href="about-joomdle.htm" class="level1 parent">
            <span>Admin</span>
            </a>
            <div class="dropdown columns1">
            <div class="dropdown-bg">
            <div>
            <div class="width100 column">
            <ul class="level2">
            <li class="level2 item173">
            <a href target="_blank" class="level2">
            <span>Admin</span>
            </a></li>
            <li class="level2 item176">
            <a href target="_blank" class="level2">
            <span>Admin</span>
            </a></li>
            <li class="level2 item160">
            <a href target="_blank" class="level2">
            <span>JAdmin</span>
            </a></li>
           
            </ul></div></div></div></div></li></ul>
           
<ul class="menu menu-dropdown">
   <li class="level1 parent">
      <span class="level1 parent">
         <span>Login</span>
      </span>
      <div class="dropdown columns1" >
         <div class="dropdown-bg">
            <div>
               <div class="module">      <form action= method="post" name="form-login" id="form-login" >
                  <fieldset class="input">
         <p id="form-login-username">
            <label for="username">
               Username<br />
               <input name="username" id="username" type="text" class="inputbox" alt="username" size="18" />
            </label>
         </p>
         <p id="form-login-password">
            <label for="passwd">
               Password<br />
               <input type="password" name="password" id="passwd" class="inputbox" size="18" alt="password" />
            </label>
         </p>
                  <p id="form-login-remember">
            <label for="remember">
               Remember me               <input type="checkbox" name="remember" id="remember" value="yes" alt="Remember Me123" >
            </label>
         </p>
                  <input type="submit" name="Submit" class="button" value="LOGIN" />
         </fieldset>
         <div style="margin-left:5px;">
            
               
         <input type="hidden" name="option" value="com_users" />
         <input type="hidden" name="task" value="user.login" />
         <input type="hidden" name="return" value="L2pkZW1vL2luZGV4LnBocC9jb21tdW5pdHk=" />
         <input type="hidden" name="c50883c5ec871df07c801a2d7ec642bd" value="1" />      </form>
</div>
            </div>
         </div>
      </div>
   </li>
</ul>
</nav>
                        
                                    <div id="search">  <!-- отсюда начинается скрипт код поиска-->
<form id="searchbox"  method="post" role="search">
   <input type="text" value="" name="searchword" placeholder="search..." />
   <button type="reset" value="Reset"></button>
   <input type="hidden" name="task"   value="search" />
   <input type="hidden" name="option" value="com_search" />
   <input type="hidden" name="Itemid" value="321" />   
</form>

<script src="search.js" ></script> 
<script>
jQuery(function($) {
   $('#searchbox input[name=searchword]').search({'url': '/jdemo/index.php/component/search/?tmpl=raw&amp;type=json&amp;ordering=&amp;searchphrase=all', 'param': 'searchword', 'msgResultsHeader': 'Search Results', 'msgMoreResults': 'More Results', 'msgNoResults': 'No results found'}).placeholder();
});
</script></div>
               <!-- здесь заканчивается код поиск-->                     
               </div>
            
                           
            </header>
      
                          <!-- maininner end -->
            </div>
<!-- main end -->
      
                        
                        
                        
         </div>
            
      </div>

   </div>
   
      
</body>
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Менюшка в Joomle
« Ответ #4 : 07.05.2012, 12:17:53 »
http://docs.joomla.org/Understanding_Output_Overrides
Это когда создаешь файл templates/шаблон/html/mod_menu/default.php
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Maiker2k3

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Менюшка в Joomle
« Ответ #5 : 07.05.2012, 15:00:30 »
http://docs.joomla.org/Understanding_Output_Overrides
Это когда создаешь файл templates/шаблон/html/mod_menu/default.php
  у меня  идет так  templates/шаблон/html/ у меня там только фаилы index.html и modules.php , а mod_menu/default.php   таково нету =(
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Менюшка в Joomle
« Ответ #6 : 07.05.2012, 15:32:05 »
Поэтому я и написал "создаешь"
И не пойму - зачем это тебе? У тя вроде разметка 1 в 1 как у Joomla. Прям видно что она взята из Joomla.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Maiker2k3

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Менюшка в Joomle
« Ответ #7 : 09.05.2012, 15:28:24 »
мне нужно менюшку вставить на свою joomlu,  и у меня не получается это меню вставить=(
« Последнее редактирование: 09.05.2012, 15:44:24 от Maiker2k3 »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Менюшка в Joomle
« Ответ #8 : 09.05.2012, 15:38:02 »
На каком этапе не получается?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Maiker2k3

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Менюшка в Joomle
« Ответ #9 : 09.05.2012, 15:52:05 »
ну я  все css  которые относятся к  меню joomlr удалил вставляю ксс которые от моего меню, пытаюсь понять как HTML теги раставить  в php файле и хз здесь у меня трабл я не понимаю что на что поменять нужно , и в итоге у меня пока что не отображается моя менюшка.....=(
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Менюшка в Joomle
« Ответ #10 : 09.05.2012, 16:16:00 »
ну я  все css  которые относятся к  меню joomlr удалил вставляю ксс которые от моего меню, пытаюсь понять как HTML теги раставить  в php файле и хз здесь у меня трабл я не понимаю что на что поменять нужно , и в итоге у меня пока что не отображается моя менюшка.....=(
Пожалуйста, читайте внимательно сообщения, а то просите помочь, а помощь в упор не видите.
Ну если меню сверстано правильно, тоесть <ul><li> тегами то делается просто. Для начала если стили подвязаны по css-классу, то поменяйте его на .menu. Если по id - то ничего не меняйте.
Замените свое меню <ul><li>..</li></ul> на <jdoc:include type="modules" name="menu" style="none" /> и опубликуйте модуль меню в позиции menu. Если нужно - пропишите свой айдишник  в параметрах модуля.
Если у вас разметка отличается и не представляется возможным ее подогнать под стандартную - перекрывайте макет меню (ищите инфу по template overrides)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Maiker2k3

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Менюшка в Joomle
« Ответ #11 : 09.05.2012, 16:58:48 »
1)- стили подвязаны по css-классу  то поменяйте его на .menu , это понял но можт не совсем,  мне grid-block только менять на .menu или все классы? если да тогда я вообще не чего не понимаю=(  

2)- у меня в joomle  вставлять код моей менюшки  после  строки <div id="topmenu">
    

3)- вот пример кода
            <nav id="menu">
            <ul class="menu menu-dropdown">
            <li class="level1 item321 active current">
            <a href="index.htm"  class="level1 active current">
            <span>Admin</span>
            </a></li>

мне вот эту  строчку <jdoc:include type="modules" name="primer-topmenu" style="xhtml" />  нужно вставить  вот так ?

            <nav id="menu">
            <jdoc:include type="modules" name="primer-topmenu" style="xhtml" />


*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Менюшка в Joomle
« Ответ #12 : 10.05.2012, 03:12:42 »

мне вот эту  строчку <jdoc:include type="modules" name="primer-topmenu" style="xhtml" />  нужно вставить  вот так ?

            <nav id="menu">
            <jdoc:include type="modules" name="primer-topmenu" style="xhtml" />

Да, я ведь вроде по-русски пишу:
Ну если меню сверстано правильно, тоесть <ul><li> тегами то делается просто. Для начала если стили подвязаны по css-классу, то поменяйте его на .menu. Если по id - то ничего не меняйте.
Замените свое меню <ul><li>..</li></ul> на <jdoc:include type="modules" name="menu" style="none" /> и опубликуйте модуль меню в позиции menu. Если нужно - пропишите свой айдишник  в параметрах модуля.
Если у вас разметка отличается и не представляется возможным ее подогнать под стандартную - перекрывайте макет меню (ищите инфу по template overrides)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Maiker2k3

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Менюшка в Joomle
« Ответ #13 : 10.05.2012, 17:57:17 »
вот что получилось

<body>
<div>

<div id="s1">
<div id="wrapper">

   <div id="header">
      <div id="logotip"></div>
     <div id="logotip2"></div>
      <div id="topmenu">
     <div id="page-bg">
   
      <div id="page-bg2">

                  
         <div id="block-toolbar">
         
            <div class="wrapper1">
               
               <div id="toolbar" class="menu">
            
                                       
                                 
               </div>
               
            </div>
            
         </div>
         
         <div class="wrapper1 menu">
      
            <header id="header">
      
               <div id="headerbar" class="menu">
               
                                    
               </div>
      
               <div id="menubar" class="menu">
                  
         <nav id="menu">
            <jdoc:include type="modules" name="primer-topmenu" style="xhtml" />
          
            
            <div class="dropdown columns1">
            <div class="dropdown-bg">
            <div>
            <div class="width100 column">
            <jdoc:include type="modules" name="primer-topmenu1" style="xhtml" />
            
            </div></div></div></div>
            
     <jdoc:include type="modules" name="primer-topmenu2" style="xhtml" />
            <div class="dropdown columns1">
            <div class="dropdown-bg">
            <div>
            <div class="width100 column">
            <jdoc:include type="modules" name="primer-topmenu3" style="xhtml" />
            
            </div></div></div></div>
            
<jdoc:include type="modules" name="primer-topmenu4" style="xhtml" />
      <div class="dropdown columns1" >
         <div class="dropdown-bg">
            <div>
               <div class="module">      <form action= method="post" name="form-login" id="form-login" >
                  <fieldset class="input">
         <p id="form-login-username">
            <label for="username">
               Username<br />
               <input name="username" id="username" type="text" class="inputbox" alt="username" size="18" />
            </label>
         </p>
         <p id="form-login-password">
            <label for="passwd">
               Password<br />
               <input type="password" name="password" id="passwd" class="inputbox" size="18" alt="password" />
            </label>
         </p>
                  <p id="form-login-remember">
            <label for="remember">
               Remember me               <input type="checkbox" name="remember" id="remember" value="yes" alt="Remember Me123" >
            </label>
         </p>
                  <input type="submit" name="Submit" class="button" value="LOGIN" />
         </fieldset>
         <div style="margin-left:5px;">
            
               
         <input type="hidden" name="option" value="com_users" />
         <input type="hidden" name="task" value="user.login" />
         <input type="hidden" name="return" value="L2pkZW1vL2luZGV4LnBocC9jb21tdW5pdHk=" />
         <input type="hidden" name="c50883c5ec871df07c801a2d7ec642bd" value="1" />      </form>
</div>
            </div>
         </div>
      </div>
   

</div>
                        
                                    <div id="search">  <!-- отсюда начинается скрипт код поиска-->
<form id="searchbox"  method="post" role="search">
   <input type="text" value="" name="searchword" placeholder="search..." />
   <button type="reset" value="Reset"></button>
   <input type="hidden" name="task"   value="search" />
   <input type="hidden" name="option" value="com_search" />
   <input type="hidden" name="Itemid" value="321" />   
</form>

<script src="search.js" ></script>  
<script>
jQuery(function($) {
   $('#searchbox input[name=searchword]').search({'url': '/jdemo/index.php/component/search/?tmpl=raw&amp;type=json&amp;ordering=&amp;searchphrase=all', 'param': 'searchword', 'msgResultsHeader': 'Search Results', 'msgMoreResults': 'More Results', 'msgNoResults': 'No results found'}).placeholder();
});
</script></div>
               <!-- здесь заканчивается код поиск-->                     
               </div>
            
                           
            
      
                          <!-- maininner end -->
            </div>
<!-- main end -->
      
                        
                        
                        
         </div>
            
      </div>

   </div>
     </div>
</div>
  


   <div id="middle">
<div id="middle1">
      <div id="container">
         <div id="content">
            <jdoc:include type="message" />
                 <jdoc:include type="component" />
         </div><!-- #content-->
      </div><!-- #container-->
</div>

      <div class="sidebar" id="sideRight">
      <div id="middle2">
        
         <jdoc:include type="modules" name="p-serch" style="xhtml" />
            <jdoc:include type="modules" name="p-news" style="xhtml" />
            
      </div><!-- .sidebar#sideRight -->
</div>
   </div><!-- #middle-->

</div><!-- #wrapper -->
<br></br> <br></br>
<div id="footer">
   
   <jdoc:include type="modules" name="primer-footer" style="xhtml" />

  </div><!-- #footer -->
</div>
</div>
</div>
</body>



стала отображаться  кнопки с логином и паролем  ну и пункты меню, а остальное как было так и осталось=(
« Последнее редактирование: 10.05.2012, 18:56:51 от Maiker2k3 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Выпадающая менюшка

Автор Madgeniy

Ответов: 2
Просмотров: 2751
Последний ответ 26.03.2008, 00:44:33
от FxPunter