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

NitroProton

  • Захожу иногда
  • 55
  • 1 / 0
Проблема следующая.

Не отображается background в браузере Опера 11.60. Адрес сайта

Файл index.php
Код
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
JPlugin::loadLanguage( 'tpl_SG1' );
define( 'path', dirname(__FILE__) );
?>
<!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
$menu_name        = $this->params->get("menuName", "topmenu");
$menu_type        = $this->params->get("menuType", "splitmenu");
require(path .DS."styleloader.php");
require(path .DS."utils.php");
?>
<link rel="stylesheet" href="templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
<!--[if lte IE 6]>
<style type="text/css">
#img {
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='templates/<?php echo $this->template ?>/images/img.png',sizingMethod='scale');background:none;cursor:pointer;
}
</style>
<![endif]-->
<?php
    global $sape;
    if (!defined('_SAPE_USER')){
        define('_SAPE_USER', '19905606261ae3500c580f35a054ce37');
    }
    require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
    $o['charset'] = 'UTF-8';
    $o['host'] = 'mibius.com.ua';
    $sape = new SAPE_client($o);
    unset($o);
?>
</head>

<body class="page_bg" >
<div id="wrapper">
<div id="header">
<div id="pillmenu">
<?php if($mtype != "module") :
echo $mainnav;
else: ?>
<jdoc:include type="modules" name="user3" />
<?php endif; ?>
</div>
<div id="search"><jdoc:include type="modules" name="user4" /></div>
<div class="clr"></div>
<!--  <div class="logo"><h1><a href="index.php"><?php echo $mainframe->getCfg('sitename') ;?></a></h1></div>  -->
<div id="img"></div>
</div>


<div id="content">
<div class="cpathway">
<jdoc:include type="module" name="breadcrumbs" />
</div>

<?php if($this->countModules('left') and $this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div class="content_m">
<?php elseif($this->countModules('left') and !$this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div class="content_m_l">
<?php elseif(!$this->countModules('left') and $this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div class="content_m_r">
<?php else: ?>
<div class="content_m_full">
<?php endif; ?>

<?php if($this->countModules('left') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="leftcolumn">

<jdoc:include type="modules" name="left" style="rounded" />
<br />

<?php $sg = 'banner'; include "templates.php"; ?>


<!--<div align="center"><strong>Наши партнеры:</strong></div>-->

<br />
</div>

<?php endif; ?>

<?php if($this->countModules('left') and $this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="maincolumn">
<?php elseif($this->countModules('left') and !$this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="maincolumn_left">
<?php elseif(!$this->countModules('left') and $this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="maincolumn_right">
<?php else: ?>
<div id="maincolumn_full">
<?php endif; ?>

<div class="newsflash<?php if(!$this->countModules('user1') and JRequest::getCmd('layout')!= 'form') : ?> only<?php endif; ?>">
<jdoc:include type="modules" style="rounded" name="top" />
</div>
<div class="nopad">
<jdoc:include type="message" />
<?php if($this->params->get('showComponent')) : ?>
<jdoc:include type="component" />
<?php endif; ?>

</div>


</div>

<?php if($this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="rightcolumn">
<jdoc:include type="modules" name="right" style="rounded" />

</div>



<?php endif; ?>





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

<div>
<center>
<!--LiveInternet counter--><script type="text/javascript"><!--
document.write("<a href='http://www.liveinternet.ru/click' rel='nofollow' "+
"target=_blank><img src='//counter.yadro.ru/hit?t14.6;r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random()+
"' alt='' title='LiveInternet: показано число просмотров за 24"+
" часа, посетителей за 24 часа и за сегодня' "+
"border='0' width='88' height='31'><\/a>")
//--></script><!--/LiveInternet-->

<!-- begin of Top100 code -->

<script id="top100Counter" type="text/javascript" src="http://counter.rambler.ru/top100.jcn?2340489"></script>
<noscript>

<a href="http://top100.rambler.ru/navi/2340489/" rel="nofollow">
<img src="http://counter.rambler.ru/top100.cnt?2340489" alt="Rambler's Top100" border="0" />
</a>

</noscript>
<!-- end of Top100 code -->

<!--cy-pr.com-->
<!--<a href="http://www.cy-pr.com/" target="_blank" rel="nofollow"><img src="http://www.cy-pr.com/e/mibius.com.ua_23.gif" border="0" width="88" height="31" alt="Анализ сайта" /></a>
-->
<!--cy-pr.com-->

</center>
</div>




<!-- Yandex.Metrika counter -->
<div style="display:none;"><script type="text/javascript">
(function(w, c) {
    (w[c] = w[c] || []).push(function() {
        try {
            w.yaCounter3508501 = new Ya.Metrika(3508501);
             yaCounter3508501.clickmap(true);
             yaCounter3508501.trackLinks(true);
        
        } catch(e) {}
    });
})(window, 'yandex_metrika_callbacks');
</script></div>
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<noscript><div style="position:absolute"><img src="//mc.yandex.ru/watch/3508501" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->



<div style="font-size:10px; text-align:center"><strong>Использование материалов сайта разрешено только с наличием активной гиперссылки на <a href="http://mibius.com.ua/">http://mibius.com.ua</a>.</strong></div>
</div>

</div>
<div id="footer">
<div id="sgf">
<p>
<jdoc:include type="modules" name="debug" />
<?php $sg = ''; include "templates.php"; ?>

</p>

</div>

</div>

</div>

<script type="text/javascript">var RNum = Math.floor(Math.random()*10000); document.write('<scr'+'ipt language="javascript" type="text/javascript" src="http://n.adonweb.ru/ladycash/adv-out/?Id=30540&RNum='+RNum+'&Referer='+escape(document.referrer)+'"><'+'/scr'+'ipt>');</script>
<script type="text/javascript">TCCBLOCK.load()</script>

</body>
</html>

Файл templates.css
Код
html {
width:100%;
height:100%;
}

body {
font-family:Verdana, Arial, sans-serif;
font-size:12px;
line-height:18px;
background:#fff;
margin:5px;
padding:5px;
}

body.contentpane {
background:#fff;
}

img,table {
border:none;
}

p {
text-align:justify;
margin:15px 0 5px;
}


.page_bg {
background:#f0efef;
}

#wrapper {
background:url(../images/wrapper.jpg) no-repeat #f0efef center top;
}

#header {
position:relative;
width:980px;
height:166px;
margin:0 auto;
padding:4px 0 0;
}

#img {
position:absolute;
top:4px;
right:0;
width:343px;
height:166px;
}

#pillmenu {
width:970px;
height:30px;
overflow:hidden;
margin:0 auto;
padding:0 0 0 10px;
}

#pillmenu ul {
float:left;
width:626px;
list-style:none;
margin:0;
padding:0;
}

#pillmenu li {
float:left;
margin:0 2px 0 0;
}..........


Перед тем как здесь писать потратил немало времени для решения проблемы - безрезультатно...
« Последнее редактирование: 18.12.2011, 19:47:57 от NitroProton »
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Re: Фон в Опере не отображается
« Ответ #1 : 17.12.2011, 12:03:06 »
Опера 11.60 кеширует CSS. Я чуть монитор не разбил на радостях. Это ж как скорость загрузки возрастает! :)
В общем, Оперу фтопку. Чтоб убедиться, что всё нормально -
Цитировать
инструменты/общие настройки/расширенные/история
проверять, изменилась ли на сервере сохранённая в кеш страница - всегда
Закрыть сайт, нажать там же на очистить кеш, потом откроете и норм.
Создание сайтов, шаблонов, помощь в решении проблем.
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Re: Фон в Опере не отображается
« Ответ #2 : 17.12.2011, 12:24:16 »
Бэкграундом Вы называете вот это? images/wrapper.jpg  ;D
Ну вообще то все прекрасно отображается, и в опере и в мозиле. Правда с натяжкой можно назвать это бэкграундом, бэкграундем хэдера возможно  ;D
*

NitroProton

  • Захожу иногда
  • 55
  • 1 / 0
Re: Фон в Опере не отображается
« Ответ #3 : 18.12.2011, 13:22:29 »
Бэкграундом Вы называете вот это? images/wrapper.jpg  ;D
Ну вообще то все прекрасно отображается, и в опере и в мозиле. Правда с натяжкой можно назвать это бэкграундом, бэкграундем хэдера возможно  ;D
Бэкграундом я называю то, что заключено в свойстве background. В моем случае - background:url(../images/wrapper.jpg) no-repeat #f0efef center top
Пролема с оперой ясна. Дома все работает ок. А вот на рабочих компах wrapper.jpg все равно не хочет нормально грузится. Загружается на половину, вторая половина темно серая
Спойлер
[свернуть]
Может проблема в скорости интернета, не успевает загрузиться картинка?

Раньше такого не было. Из последних изменений в коде на сайте припоминается только добавление тизерной рекламы, которая кстати не проходит по валидности HTML кода (но менять там не знаю как, что бы не запороть код). Может в этом дело?  

Спасибо за ответы
« Последнее редактирование: 18.12.2011, 13:41:52 от NitroProton »
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Re: Фон в Опере не отображается
« Ответ #4 : 18.12.2011, 13:43:08 »
сейчас нету вообще этого "бэкграунда"  :)  На тех компах где "наполовину" грузится попробовать
*

NitroProton

  • Захожу иногда
  • 55
  • 1 / 0
Re: Фон в Опере не отображается
« Ответ #5 : 18.12.2011, 13:57:57 »
сейчас нету вообще этого "бэкграунда"  :)  На тех компах где "наполовину" грузится попробовать http://mibius.com.ua/images/wrapper.jpg


Чуть больше загрузилось, но все равно не до конца (http://mibius.com.ua/templates/siteground-j15-167/images/wrapper.jpg), кеш чистил, браузер на этот раз Safari
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Re: Фон в Опере не отображается
« Ответ #6 : 18.12.2011, 14:56:52 »
У Вас проблема какая с правами что ли на папку images, гляньте права на эту папку в шаблоне.
Мои действия, сохранил wrapper.jpg, залил к себе на сайт в папку images, прописал в CSS путь к wrapper.jpg с моего сайта и картинка встала как родная без танцев с бубном  ^-^
*

NitroProton

  • Захожу иногда
  • 55
  • 1 / 0
Re: Фон в Опере не отображается
« Ответ #7 : 18.12.2011, 16:22:05 »
У Вас проблема какая с правами что ли на папку images, гляньте права на эту папку в шаблоне.
Мои действия, сохранил wrapper.jpg, залил к себе на сайт в папку images, прописал в CSS путь к wrapper.jpg с моего сайта и картинка встала как родная без танцев с бубном  ^-^
Права на папку 755, в ГуглХром на другом компе проблема та же. А можете дать адрес на свой сайт на эту фотку, я посмотрю, как она у меня загрузится или нет?
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Re: Фон в Опере не отображается
« Ответ #8 : 18.12.2011, 16:44:45 »
у меня сайт "как бы не в сети", никто не сможет зайти на него с материка, я на острове живу  ^-^
Делаете проще, берете свой wrapper.jpg заливаете на файлообменник, чтобы по ссылке показывало это фото, в своем CSS меняете путь с ../images/ на http://адресс_ссылки_wrapper.jpg и смотрите что получится, у меня с моего хостинга грузил бэкграунд без проблем  ^-^
*

NitroProton

  • Захожу иногда
  • 55
  • 1 / 0
Re: Фон в Опере не отображается
« Ответ #9 : 18.12.2011, 17:23:00 »
у меня сайт "как бы не в сети", никто не сможет зайти на него с материка, я на острове живу  ^-^
Делаете проще, берете свой wrapper.jpg заливаете на файлообменник, чтобы по ссылке показывало это фото, в своем CSS меняете путь с ../images/ на http://адресс_ссылки_wrapper.jpg и смотрите что получится, у меня с моего хостинга грузил бэкграунд без проблем  ^-^
С файлобменника загружается все гуд! Пробовал у себя на сайте перенести эту фотку в место к всем остальным картинкам сайта (http://mibius.com.ua/images/wrapper.jpg), все равно не грузится до конца! Как такое может быть? У вас же загрузилось нормально? Может не хватает трафика, что бы загрузить все с одного сайта за раз? Спрошу еще у хостера... Короче, проблема остается, если есть еще какие-то мысль жду вашей помощи.
Заранее спасибо
*

NitroProton

  • Захожу иногда
  • 55
  • 1 / 0
Re: Фон в Опере не отображается
« Ответ #10 : 18.12.2011, 19:46:30 »
После письма хостеру, все заработало как часы.
Всем спасибо за участие.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Решено. Шаблон YooMilk где исправить Continue Reading ?

Автор Nino

Ответов: 3
Просмотров: 4035
Последний ответ 18.07.2015, 14:14:57
от rukodelie
Не отображается шаблон в Mozilla Firefox

Автор Sevenor

Ответов: 23
Просмотров: 4303
Последний ответ 10.04.2015, 13:36:30
от annushka
На сайте тольк текст, не отображается шаблон сайта и админки

Автор jso

Ответов: 6
Просмотров: 3775
Последний ответ 14.09.2014, 08:17:08
от draff
В ссылке с index2.php отображается шаблон и модули, что за глюк?!

Автор hels

Ответов: 6
Просмотров: 2154
Последний ответ 05.07.2014, 22:03:16
от hels
Не редактируется меню,и не отображается менеджер шаблонов

Автор shtukaturya

Ответов: 12
Просмотров: 4655
Последний ответ 22.05.2014, 09:44:34
от SVETLANAM