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

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
В результатах поиска, откуда то в ссылке взялось окончание Array.html
сайт http://www.nu-ss.ru/
не могу понять откуда оно там. :(
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Видимо что-то пошло не так, точнее очень трудно сказать.
*

trixsoft

  • Новичок
  • 4
  • 0 / 0
на шаблон j_purity помогите обрамить.
не знаю куда именно вставить
<jdoc:include type="component" /> ?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
его надо найти, а там где он есть и обрамлять.
*

trixsoft

  • Новичок
  • 4
  • 0 / 0
результат может показываться только в левой части и то если через админку этот код прописываешь в качестве модуля.
а если в index.php шаблона вставить, то ничего не происходит.
код index.php

Код
<?php
/**
 * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
 * @license GNU/GPL, see LICENSE.php
 * Joomla! is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 */

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

include_once (dirname(__FILE__).DS.'/ja_vars.php');

?>

<!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="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>">

<head>
<jdoc:include type="head" />
<?php JHTML::_('behavior.mootools'); ?>

<link rel="stylesheet" href="<?php echo $tmpTools->baseurl(); ?>templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $tmpTools->baseurl(); ?>templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $tmpTools->templateurl(); ?>/css/template.css" type="text/css" />

<script language="javascript" type="text/javascript" src="<?php echo $tmpTools->templateurl(); ?>/js/ja.script.js"></script>

<?php if ($tmpTools->getParam('rightCollapsible')): ?>
<script language="javascript" type="text/javascript">
var rightCollapseDefault='<?php echo $tmpTools->getParam('rightCollapseDefault'); ?>';
var excludeModules='<?php echo $tmpTools->getParam('excludeModules'); ?>';
</script>
<script language="javascript" type="text/javascript" src="<?php echo $tmpTools->templateurl(); ?>/js/ja.rightcol.js"></script>
<?php endif; ?>

<?php  if($this->direction == 'rtl') : ?>
<link rel="stylesheet" href="<?php echo $tmpTools->templateurl(); ?>/css/template_rtl.css" type="text/css" />
<?php else : ?>
<link rel="stylesheet" href="<?php echo $tmpTools->templateurl(); ?>/css/menu.css" type="text/css" />
<?php endif; ?>

<?php if ($this->countModules('hornav')): ?>
<?php if ($tmpTools->getParam('horNavType') == 'css'): ?>
<link rel="stylesheet" href="<?php echo $tmpTools->templateurl(); ?>/css/ja-sosdmenu.css" type="text/css" />
<script language="javascript" type="text/javascript" src="<?php echo $tmpTools->templateurl(); ?>/js/ja.cssmenu.js"></script>
<?php else: ?>
<link rel="stylesheet" href="<?php echo $tmpTools->templateurl(); ?>/css/ja-sosdmenu.css" type="text/css" />
<script language="javascript" type="text/javascript" src="<?php echo $tmpTools->templateurl(); ?>/js/ja.moomenu.js"></script>
<?php endif; ?>
<?php endif; ?>

<?php if ($tmpTools->getParam('theme_header') && $tmpTools->getParam('theme_header')!='-1') : ?>
<link rel="stylesheet" href="<?php echo $tmpTools->templateurl(); ?>/styles/header/<?php echo $tmpTools->getParam('theme_header'); ?>/style.css" type="text/css" />
<?php endif; ?>
<?php if ($tmpTools->getParam('theme_background') && $tmpTools->getParam('theme_background')!='-1') : ?>
<link rel="stylesheet" href="<?php echo $tmpTools->templateurl(); ?>/styles/background/<?php echo $tmpTools->getParam('theme_background'); ?>/style.css" type="text/css" />
<?php endif; ?>
<?php if ($tmpTools->getParam('theme_elements') && $tmpTools->getParam('theme_elements')!='-1') : ?>
<link rel="stylesheet" href="<?php echo $tmpTools->templateurl(); ?>/styles/elements/<?php echo $tmpTools->getParam('theme_elements'); ?>/style.css" type="text/css" />
<?php endif; ?>

<!--[if IE 7.0]>
<style type="text/css">
.clearfix {display: inline-block;}
</style>
<![endif]-->
<?php if ($tmpTools->isIE6()): ?>
<!--[if lte IE 6]>
<script type="text/javascript">
var siteurl = '<?php echo $tmpTools->baseurl();?>';

window.addEvent ('load', makeTransBG);
function makeTransBG() {
fixIEPNG($E('.ja-headermask'), '', '', 1);
fixIEPNG($E('h1.logo a'));
fixIEPNG($$('img'));
fixIEPNG ($$('#ja-mainnav ul.menu li ul'), '', 'scale', 0, 2);
}
</script>
<style type="text/css">
.ja-headermask, h1.logo a, #ja-cssmenu li ul { background-position: -1000px; }
#ja-cssmenu li ul li, #ja-cssmenu li a { background:transparent url(<?php echo $tmpTools->templateurl(); ?>/images/blank.png) no-repeat right;}
.clearfix {height: 1%;}
</style>
<![endif]-->
<?php endif; ?>

<style type="text/css">
#ja-header,#ja-mainnav,#ja-container,#ja-botsl,#ja-footer {width: <?php echo $tmpWidth; ?>;margin: 0 auto;}
#ja-wrapper {min-width: <?php echo $tmpWrapMin; ?>;}
</style>
</head>

<body id="bd" class="fs<?php echo $tmpTools->getParam(JA_TOOL_FONT);?> <?php echo $tmpTools->browser();?>" >
<a name="Top" id="Top"></a>
<ul class="accessibility">
<li><a href="#ja-content" title="<?php echo JText::_("Skip to content");?>"><?php echo JText::_("Skip to content");?></a></li>
<li><a href="#ja-mainnav" title="<?php echo JText::_("Skip to main navigation");?>"><?php echo JText::_("Skip to main navigation");?></a></li>
<li><a href="#ja-col1" title="<?php echo JText::_("Skip to 1st column");?>"><?php echo JText::_("Skip to 1st column");?></a></li>
<li><a href="#ja-col2" title="<?php echo JText::_("Skip to 2nd column");?>"><?php echo JText::_("Skip to 2nd column");?></a></li>
</ul>

<div id="ja-wrapper">

<!-- BEGIN: HEADER -->
<div id="ja-headerwrap">
<div id="ja-header" class="clearfix" style="background: url(<?php echo $tmpTools->templateurl(); ?>/images/header/<?php echo $tmpTools->getRandomImage(dirname(__FILE__).DS.'images/header'); ?>) no-repeat top <?php if($this->direction == 'rtl') echo 'left'; else echo 'right';?>;">

<div class="ja-headermask">&nbsp;</div>

<?php
$siteName = $tmpTools->sitename();
if ($tmpTools->getParam('logoType')=='image'): ?>
<h1 class="logo">
<a href="index.php" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></span></a>
</h1>
<?php else:
$logoText = (trim($tmpTools->getParam('logoText'))=='')? $config->sitename : $tmpTools->getParam('logoText');
$sloganText = (trim($tmpTools->getParam('sloganText'))=='')? JText::_('SITE SLOGAN') : $tmpTools->getParam('sloganText'); ?>
<h1 class="logo-text">
<a href="index.php" title="<?php echo $siteName; ?>"><span><?php echo $logoText; ?></span></a>
</h1>
<p class="site-slogan"><?php echo $sloganText;?></p>
<?php endif; ?>

<?php $tmpTools->genToolMenu(JA_TOOL_FONT, 'png'); ?>

<?php if($this->countModules('user4')) : ?>
<div id="ja-search">
<jdoc:include type="modules" name="user4" />
</div>
<?php endif; ?>

</div>
</div>
<!-- END: HEADER -->

<!-- BEGIN: MAIN NAVIGATION -->
<?php if ($this->countModules('hornav')): ?>
<div id="ja-mainnavwrap">
<div id="ja-mainnav" class="clearfix">
<jdoc:include type="modules" name="hornav" />
</div>
</div>
<?php endif; ?>
<!-- END: MAIN NAVIGATION -->

<div id="ja-containerwrap<?php echo $divid; ?>">
<div id="ja-containerwrap2">
<div id="ja-container">
<div id="ja-container2" class="clearfix">

<div id="ja-mainbody<?php echo $divid; ?>" class="clearfix">

<!-- BEGIN: CONTENT -->
<div id="ja-contentwrap">
<div id="ja-content">

<jdoc:include type="message" />

<?php if(!$tmpTools->isFrontPage()) : ?>
<div id="ja-pathway">
<jdoc:include type="module" name="breadcrumbs" />
</div>
<?php endif ; ?>

<jdoc:include type="component" />

<?php if($this->countModules('banner')) : ?>
<div id="ja-banner">
<jdoc:include type="modules" name="banner" />
</div>
<?php endif; ?>

</div>
</div>
<!-- END: CONTENT -->

<?php if ($this->countModules('left')): ?>
<!-- BEGIN: LEFT COLUMN -->
<div id="ja-col1">
<jdoc:include type="modules" name="left" style="xhtml" />
</div><br />
<!-- END: LEFT COLUMN -->
<?php endif; ?>

</div>

<?php if ($this->countModules('right')): ?>
<!-- BEGIN: RIGHT COLUMN -->
<div id="ja-col2">
<jdoc:include type="modules" name="right" style="jarounded" />
</div><br />
<!-- END: RIGHT COLUMN -->
<?php endif; ?>

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

<?php
$spotlight = array ('user1','user2','top','user5');
$botsl = $tmpTools->calSpotlight ($spotlight,99,22);
if( $botsl ) :
?>
<!-- BEGIN: BOTTOM SPOTLIGHT -->
<div id="ja-botslwrap">
<div id="ja-botsl" class="clearfix">

  <?php if( $this->countModules('user1') ): ?>
  <div class="ja-box<?php echo $botsl['user1']['class']; ?>" style="width: <?php echo $botsl['user1']['width']; ?>;">
<jdoc:include type="modules" name="user1" style="xhtml" />
  </div>
  <?php endif; ?>

  <?php if( $this->countModules('user2') ): ?>
  <div class="ja-box<?php echo $botsl['user2']['class']; ?>" style="width: <?php echo $botsl['user2']['width']; ?>;">
<jdoc:include type="modules" name="user2" style="xhtml" />
  </div>
  <?php endif; ?>

  <?php if( $this->countModules('top') ): ?>
  <div class="ja-box<?php echo $botsl['top']['class']; ?>" style="width: <?php echo $botsl['top']['width']; ?>;">
<jdoc:include type="modules" name="top" style="xhtml" />
  </div>
  <?php endif; ?>

  <?php if( $this->countModules('user5') ): ?>
  <div class="ja-box<?php echo $botsl['user5']['class']; ?>" style="width: <?php echo $botsl['user5']['width']; ?>;">
<jdoc:include type="modules" name="user5" style="xhtml" />
  </div>
  <?php endif; ?>

</div>
</div>
<!-- END: BOTTOM SPOTLIGHT -->
<?php endif; ?>

<!-- BEGIN: FOOTER -->
<div id="ja-footerwrap">
<div id="ja-footer" class="clearfix">

<div id="ja-footnav">
<jdoc:include type="modules" name="user3" />
</div>

<div class="copyright">
<jdoc:include type="modules" name="footer" />
</div>

<div class="ja-cert">
<jdoc:include type="modules" name="syndicate" />
    <a href="http://jigsaw.w3.org/css-validator/check/referer" target="_blank" title="<?php echo JText::_("CSS Validity");?>" style="text-decoration: none;">
<img src="<?php echo $tmpTools->templateurl(); ?>/images/but-css.gif" border="none" alt="<?php echo JText::_("CSS Validity");?>" />
</a>
<a href="http://validator.w3.org/check/referer" target="_blank" title="<?php echo JText::_("XHTML Validity");?>" style="text-decoration: none;">
<img src="<?php echo $tmpTools->templateurl(); ?>/images/but-xhtml10.gif" border="none" alt="<?php echo JText::_("XHTML Validity");?>" />
</a>
</div>

<br />
</div>
</div>
<!-- END: FOOTER -->

</div>

<jdoc:include type="modules" name="debug" />

</body>

</html>
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
Видимо что-то пошло не так, точнее очень трудно сказать.
я так понимаю что это все из-за роутера который установлен. Ну да ладно не думаю что это сильно критично для поисковых систем или все таки будет критично что урл товара и урл товара из поиска будут отличаться?
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
и ещё почему то не показывает картинку nophoto которая показывается на сайте, когда у товара отсутствует свое изображение. Это как поправить?
« Последнее редактирование: 29.02.2012, 14:24:37 от orexov_m »
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А как поисковики доберутся до товара из поиска?
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
А как поисковики доберутся до товара из поиска?
логично :)
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

qazwsx

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Блин, как сделать, чтоб подкатегории не отображались?
*

DriverCarver

  • Новичок
  • 6
  • 0 / 0
Arkadiy, прошу строго не судить и не крыть матом в случае моей необразованности. Сайтом я занимаюсь с недавнего времени, поэтому не судите. Никогда не занимался, решил попробовать.
1. сайт на бесплатном хостинге.
2. autodisk.ts9.ru
3. Стандартный поиск (расширенный поиск по параметрам) главного модуля VirtueMart не дает никаких результатов, собственно говоря ничего не находит. Что и послужило для поиска Вашего компонента.
4. Установил все в соответствии с инструкцией, и, казалось бы, даже и правильно отфильтровывает количество товаров. Но всеже пишет "Поиск не дал результатов."
5. Цены прописаны

Что еще может вызывать такую реакцию? Помогите пожалуйста, если бы знал к кому обратиться, не тревожил Вас. Интернет перекопал, рассчитываю на Вашу помощь. С уважением, Илья!
*

DriverCarver

  • Новичок
  • 6
  • 0 / 0
Готов обсудить возможность оплаты настройки Вашего компонента
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Цитировать
Что еще может вызывать такую реакцию?
Больше практически ничего. Единственный вариант - стандартный поиск VirtueMart тоже не дает результатов, это говорит о том, что что-то не заполнено или заполнено неправильно.
*

DriverCarver

  • Новичок
  • 6
  • 0 / 0
Сколько будет стоить осмотр пациента?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Ну во-первых сам осмотрись - если характеристики у товаров заполнены, то должен быть и результат. В любом случае.
*

DriverCarver

  • Новичок
  • 6
  • 0 / 0
А может это как-то быть связано с бесплатным хостингом или тем, что коряво установлены компоненты VirtueMart? Потому что товар не выводит ни один из поисков сайта. А еще, у меня все товары без категорий, вможет в этом быть загвоздка?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

DriverCarver

  • Новичок
  • 6
  • 0 / 0
Что ищешь как всегда оказывается где-то рядом))))
А еще вопрос, куда именно нужно вставлять
<div id="main_search">
         <jdoc:include type="component" />
</div>

а то у меня получилась дублированная информация главной страницы. Растолкуйте уж пожалуйста не путевому, и я от Вас отстану)))
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Этим заменить
Код
<jdoc:include type="component" />
где он есть.
*

DriverCarver

  • Новичок
  • 6
  • 0 / 0
Спасибо, самому стыдно становится, когда находишь все под ногами)))
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Попробовал ваш компонент. Везде где нашел, прописал изменения для jdoc. Ничего не сработало. При этом стандартный поиск позиции находит. Шаблон ja purity II
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Стандартный поиск не нуждается в дополнительных дивах т.к. работает без аякса. А тебе еще надо поискать.
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Стандартный поиск не нуждается в дополнительных дивах т.к. работает без аякса. А тебе еще надо поискать.

Так обрамление ставил везде где находилась указанная строка. Ничего не происходило при нажатии на поиск. Хотя и списки категорий выводились, и списки производителей. указывалась и цена. Реакции не было никакой, что и смутило
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
<div id="main_search"> должен появиться на странице (в коде страницы) в результате вставки его в шаблон. Если не появился, значит не туда вставляешь, ищи другое место.
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
<div id="main_search"> должен появиться на странице (в коде страницы) в результате вставки его в шаблон. Если не появился, значит не туда вставляешь, ищи другое место.

В коде страницы он есть. Действия нет.
Может тогда кто подскажет какой другой компонент для осуществления поиска по VirtueMart с возможностью выбора категорий, производителя и пр.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Тогда смотри какие ошибки консоль FireBug выдает.
*

Sedoy

  • Давно я тут
  • 897
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
как в выпадающем списке категорий товара выделить категорию 1 уровня жирным, в каком файле прописан стиль?
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Надо открыть FireBug на вкладке HTML или правой кнопкой п интересующему месту и посмотреть, он все покажет.
*

AleksandrXXXXX

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
добрые люди подскажите пожалуйста как сделать чтобы поле модуля не выходило за границы самого модуля...
перерыл все ветки этого модуля ели установилась вот эта версия но смотрится ужасно из-за того что не в активном положении поле выбора "Категорий", "характеристик" и т.д. выходят за сам модуль...
нашёл только вот эти посты:
Аркадий,ещё вопрос: а как можно уменьшить ширину поля "категории" через php?Просто,через CSS изменяется только ширина рамки, в то время как текстовое поле выходит за рамки модуля.
Просто надо применять несколько усложненные правила CSS типа
Код
div.class selekt{}

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

ещё не знаю по какой причине но у меня при сохранении или отмены в самом компоненте выходит страница ошибки 404 и пишет страница не найдена... это решаемо?
глюк возможен из-за того что не сколько раз переустанавливал...

как оказалось модуль не работает с модулем GoboSlide
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Все это относится к CSS и конфликтам js, всему этому можно нучиться, было бы желание. Осваивай FireBug, он много что показывает, практически все что нужно.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart - SMS уведомления о сделаном заказе.

Автор bork

Ответов: 42
Просмотров: 23292
Последний ответ 26.07.2021, 22:11:25
от Oleg91
Отчеты и статистика для VirtueMart

Автор 4kict

Ответов: 25
Просмотров: 10377
Последний ответ 14.01.2021, 00:09:53
от gartes
IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 53917
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 28021
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
Поиск для магазина автозапчастей как на Exist.ru!

Автор zzaj

Ответов: 21
Просмотров: 8832
Последний ответ 11.05.2016, 13:50:02
от Pahom72