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

askhab

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
использовал модуль, но он у меня создает 2тыс с лишним запросов, и грузит на 6-7 секунд, это очень большая проблема, единственный вариант который я вижу это ограничить вывод подкатегорий, то есть чтоб не показывал прям до последней к примеру 5 подкатегории а только до 3 вложенной, так думаю до 3 секунд дойдет, но это еще терпимо, теперь нужна помощь, подскажите где что дописать,чтобы ограничить вывод подкатегорий, вот файл я так понимаю mod_product_categories.php и там код:

Код
global $jscook_type, $jscookMenu_style, $jscookTree_style;

// Load the VirtueMart main parse code
if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
$mosConfig_absolute_path = realpath( dirname(__FILE__).'/../..' );
} else {
require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}

$category_id = vmGet( $_REQUEST, 'category_id');

/* Get module parameters */
$class_sfx = $params->get( 'class_sfx', "" );
$menutype = $params->get( 'menutype', "links" );
$jscookMenu_style = $params->get( 'jscookMenu_style', 'ThemeOffice' );
$jscookTree_style = $params->get( 'jscookTree_style', 'ThemeXP' );
$jscook_type = $params->get( 'jscook_type', 'menu' );
$menu_orientation = $params->get( 'menu_orientation', 'hbr' );
$_REQUEST['root_label'] = $params->get( 'root_label', 'Shop' );

$class_mainlevel = "mainlevel".$class_sfx;

global $VM_LANG, $sess;
if( vmIsJoomla('1.5' )) {
$vm_path = $mosConfig_absolute_path.'/modules/mod_virtuemart';
} else {
$vm_path = $mosConfig_absolute_path.'/modules';
}
switch( $menutype ) {

case 'transmenu':
/* TransMenu script to display a DHTML Drop-Down Menu */
include( $vm_path . '/vm_transmenu.php' );
break;

case  'dtree':
/* dTree script to display structured categories */
include( $vm_path . '/vm_dtree.php' );
break;

case 'jscook':
/* JSCook Script to display structured categories */
include( $vm_path . '/vm_JSCook.php' );
break;

case 'tigratree':
/* TigraTree script to display structured categories */
include( $vm_path . '/vm_tigratree.php' );
break;

case 'links' :
default:
/* MENUTPYE LINK LIST */
require_once(CLASSPATH.'ps_product_category.php');
$ps_product_category = new ps_product_category();

echo $ps_product_category->get_category_tree( $category_id, $class_mainlevel );
}

 ?>

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

askhab

  • Осваиваюсь на форуме
  • 39
  • 0 / 0


использовал ooexlorer
у меня происходитналожение слов, так как не влезают в длину, нужно или  перенос сделать или сделать возможность прокрутки, подскажите, желательно второй вариант, как сделать, да и вообще в каком файле менять стили, а то не могу понять где фон изменить ,где вообще шаблон этих шаблонов модуля
« Последнее редактирование: 11.10.2011, 19:54:40 от askhab »
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
как ему свой CSS присобачить и JS желательно а то толку нет от него
*

enerbe

  • Новичок
  • 7
  • 0 / 0
Можно ли  возможности вашего модуля прикрутить к выбору каталога который открывается при добавлении материала пользователем с фронтенда.
Здесь показано как его настроить http://joomlaforum.ru/index.php/topic,154107.new.html#new-categor, но древовидность не сворачивается/разворачивается как на вашем.
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Как мне заменить и убрать вот это

Код
<div class="art-BlockContent-body">
<ul id="sidebarmenu1" class="menu">
<li>


Заменить
<div class="sidebarmenu">
<ul id="sidebarmenu1">

удалить class="menu"

ладно с <ul id="sidebarmenu1"> разобрался как div class= сменить?++

Суффикс класса модуля подставлял непашет не перебивает class в фаербаге меняю class diva то меню встает как надо за исключением некоторых стилей CSS но это лирика

Суффикс класса модуля не пашет почему? уже кесь мозг себе вынес
« Последнее редактирование: 10.11.2011, 13:39:08 от terr »
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Цитировать
Суффикс класса модуля не пашет почему?
Потому что используете артистерный шаблон . А он выводит модули через свой, супер артистерный стиль . И суффикс модуля в нем не используется . Видимо использование для модуля суффикса класса противоречит артистерной религии  ;D
Тут два решения , подправить артистерный стиль вывода модуля, добавив суффикс . Или изменить в шаблоне стиль вывода модуля на свой или системный .
Ответы на вопросы по CSS . Откройте для себя Firebug
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
шаблон свой собрать тогда чтоли?
*

Niko1

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Здравствуйте. Большое спасибо за модуль. Есть один вопрос. Как в акордеоне сделать, что бы подкатегории раскрывались не при наведении курсора, а при нажатии на родительскую категорию? Как здесь: http://aquashop.kiev.ua/joomla. В самом начале(на 2 странице) пользователь wisma писал как это сделать, но он говорил обо старой версии. Как это сделать в новой версии?
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Все приконопатил я стили, обошолся тем что прописал в стилях меню класс шаблона так как шаблон артистира он гуманойдный вобщем работает, присоединяюсь к вопросу
Цитировать
Niko1
тоже хотел бы реализовать фичу
*

Chij

  • Осваиваюсь на форуме
  • 47
  • 0 / 1
Подскажите как реализовать следующую задачу: есть главное меню с пятью разделами категорий VM (одежда, обувь и т.п.), необходимо при открытии раздела одежда главный модуль меню что бы исчезал а появлялся новый модуль с категориями относящимся к одежде.  Пробовал задавать отображение модуля только в разделе одежда, все нормально отображается при переходе в раздел одежда, но например при переходе в под категории  раздела одежда модуль исчезает.
*

Niko1

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Здравствуйте. Большое спасибо за модуль. Есть один вопрос. Как в акордеоне сделать, что бы подкатегории раскрывались не при наведении курсора, а при нажатии на родительскую категорию? Как здесь: http://aquashop.kiev.ua/joomla. В самом начале(на 2 странице) пользователь wisma писал как это сделать, но он говорил обо старой версии. Как это сделать в новой версии?
Ну подскажите, пожалуйста. Очень нужно...
*

zdm77

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Все так-же по CSS
« Ответ #611 : 21.11.2011, 14:29:35 »
Здравствуйте, подскажите пожалуйста почему так... Очень долго читал... Вообщем у меня дефолтное отображение, добавляю следующий css
.menu  a:hover{
     background:#71ACCC;
     font-weight:bold;
     color:#FFFFFF;
     font-size:11px;
}
.menu .current  a{
    background:#2A5578;
    font-weight:bold;
    color:#FFFFFF;
}
и у меня при выделении старшей группы окрашиваются и все дети, что очень не красиво, при выборе уже конкретного ребенка снимаются выделения и выделяется только он... шаблон на артистере может из-за него..... Взгляните пожалуйста http://majestus-shop.ru/index.php?option=com_virtuemart&Itemid=2 и выберите любую категорию имеющую детей, "Гидрокостюмы мокрые" например.


*

Niko1

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Здравствуйте, подскажите пожалуйста почему так... Очень долго читал... Вообщем у меня дефолтное отображение, добавляю следующий css
.menu  a:hover{
     background:#71ACCC;
     font-weight:bold;
     color:#FFFFFF;
     font-size:11px;
}
.menu .current  a{
    background:#2A5578;
    font-weight:bold;
    color:#FFFFFF;
}
и у меня при выделении старшей группы окрашиваются и все дети, что очень не красиво, при выборе уже конкретного ребенка снимаются выделения и выделяется только он... шаблон на артистере может из-за него..... Взгляните пожалуйста http://majestus-shop.ru/index.php?option=com_virtuemart&Itemid=2 и выберите любую категорию имеющую детей, "Гидрокостюмы мокрые" например.

Здравствуйте. Добавьте еще во это:
ul.menu li.parent ul li a {
    background: none;
    color: #46646D;
}
ul.menu li.parent ul li.current a {
    background: #71ACCC;
    color: #fff;
}
*

M@X1M

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
В первую очередь огромное спасибо и плюс в репу автору за модуль! Все работает замечательно.
Но у меня проблема с отображением на IE7 (режим Аккордеон): см. вложение.

Т.е. отображается сразу все, а не только развернутое.
Вот мой CSS (стандартный джумловский код для .menu удален):
Код
#accordion ul {
list-style: none;
background: none;
display: block;
margin: 0;
padding: 0;
}

ul.menu {
margin: 0 -5px 0 -15px;
}

#accordion li {
list-style: none;
background: url(../images/bullet.gif) no-repeat 3px center;
position: relative;
display: block;
margin: 0 0 0 10px;
padding: 0;
line-height: normal;
}

#accordion li.parent {
background: none;
}

* HTML ul.menu li { /*IE 6*/
width: 99%;
}

*+html ul.menu li { /*IE 7*/
width: 99%;
}

#accordion a {
position: relative;
display: block;
outline: none;
padding: 5px 5px 5px 0;
margin: 0 0 0 12px;
background: url(../images/mainlevel-bg.gif) repeat-x right bottom;
text-decoration: none;
color: #666666;
}

#accordion a:hover,
#accordion a:active,
#accordion a:focus {
background: url(../images/mainlevel-active.gif) repeat-x right bottom;
text-decoration: none;
color: #04A504;
}

#accordion li > span {
    position: absolute;
    display: block;
    width: 10px;
    height: 10px;
margin: 6px 0 0 0;
}

#accordion li.first > a {
font-weight: bold;
font-size: 125%;
font-family: 'Comic Sans MS','Lucida Grande',Arial,Helvetica,sans-serif;
margin: 0 0 0 15px;
}

#accordion li.first > span {
margin: 10px 0 0 0;
}

#accordion li.parent > span {
background: url(../images/plus-green.gif) no-repeat left center;
}

#accordion li.expanded > span {
background: url(../images/minus-green.gif) no-repeat left center;
}

#accordion li.current > a  {
background: url(../images/mainlevel-active.gif) repeat-x right bottom;
font-style: normal !important;
font-weight: bold;
color: #04A504;
}

#accordion li.current > a  > span {
text-decoration: underline;
}

Может кто-то подсказать, что тут не так? Сам к сожалению не разбираюсь в особенностях верстки по разные браузеры. =(

[вложение удалено Администратором]
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
Настроивайте line-height для каждого уровня категорий
*

M@X1M

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
uralmas, спасибо, что откликнулись, но что именно нужно сделать с line-height я не понял. Можете немного пояснить?

Что пробовал:
- убирать "line-height: normal", но тогда он заимствуется из body, где стоит "line-height: 1.5"
- пробовал ставить "line-height: 0" и "line-height: 25px" (по высоте бэкграундной картинки)

Но ошибка отображения остается. Поисковики выдают кучу инфы по запросу "line-height ie7", но в основном на английском и разобраться как решить проблему мне не удалось. =(

А точно в этом проблема? Ведь все элементы меню вроде бы на месте, просто их не должно быть видно, пока не развернешь родительские. Прикрепляю пример правильного отображения.

[вложение удалено Администратором]
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
Значит у вас проблема с самим скриптом аккордеона - стили перебиваются. Если датите ссылку на сайт, то, может быть, удастся решить проблему.
*

M@X1M

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Спасибо, написал в личку
*

DeLamundus

  • Новичок
  • 3
  • 0 / 0
Столкнулся с проблемой:
Скелет меню:
МОДУЛЬ1(аккордион)
категория-A
-подкатегория d
-подкатегория f
-подкатегория g
категорияВ
КатегорияС

МОДУЛЬ2(тоже аккордион)
-категория O
-категория L
-категория Z

В настройке шаблона vm при установке "Product Listing with a table", пропадает вывод подкатегорий на главной странице. Когда всё в порядке, то при нажатии на "Категория А" должен выводиться список подкатегорий d,f и g (не в модуле, а на самой странице. с изображение подкатегории).
*При установке "no-table, div-based" всё корректно отображается.

Подскажите, где могла затаиться ошибка, и пути её устранения?
Буду премногоблагодарен, уже 2-ой день тыкаюс..
*

mayson_ml

  • Захожу иногда
  • 60
  • 0 / 0
как сделать вид категорий такого вида?
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
Более подробно опишите свой вопрос - где, что именно и прочее.
*

mayson_ml

  • Захожу иногда
  • 60
  • 0 / 0
установил данный мод 2.1.0, отображаются шаблоны модуля "Select, mootree" шаблоны "default, accordion" выследят одинаково.
я так понимаю, что так должен выглядеть шаблон "accordion"

может подскажите где еще можно  скачать шаблоны?
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
Дополнительных шаблонов не встречал.
Так и не понял, в чём проблема?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Шаблон accordion не имеет css-стилей (только js-скрипты для эффекта аккордиона), поэтому и выглядет так же. Все настраивается легко через CSS, все схоже со стандартным модулем меню Joomla.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Вопрос, пешу в админке
Код
БПиНФ ("Рамка")
Это категорий, на сайте в каталоге отображение такое же, а вот в вашем модуле добавляется слеш и выглядеть вот так
Код
БПиНФ (\"Рамка\")
,  почему?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
terr, походу это бага. Модулем уже не занимаюсь, попробуй просто другие кавычки использовать. Например «такие» или “такие”
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

vanyaseverin

  • Новичок
  • 2
  • 0 / 0
Здравствуйте, не могли бы вы подсказать, как сделать так, чтоб аккордион раскрывался не по наведению мышью, а по клику?
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
примотать свой JS так мне кажется проще будет
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Всем доброго времени суток.А намечается подобный модуль для VM 2.Дело в том что там выводит только 2 уровня категории,но это совсем мало.Может кто возьмется за благое дело.Спасибо.
*

FLAGG

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Добрый день.
Подскажите, пожалуйста, как организовать вертикальное выравнивание превьюшек и текста по средней линии: кривовато смотрится...
http://www.centerir.ru/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

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

Автор aleks_yug

Ответов: 97
Просмотров: 28024
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
Модуль Cherry Picker for VirtueMart

Автор flintstone

Ответов: 42
Просмотров: 26623
Последний ответ 04.01.2016, 21:25:50
от gleb22
Добавить модуль в товар

Автор Tokyo

Ответов: 2
Просмотров: 2886
Последний ответ 11.05.2015, 20:43:32
от tierex
Модуль VirtueMart для фильтра товаров по категориям!

Автор maxmur

Ответов: 104
Просмотров: 52585
Последний ответ 08.08.2014, 11:47:37
от Хусен