Новости 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 Ответов
  • 194729 Просмотров
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
люди добрые,сделал шаблон в artisteer 3, подскажите пожалуйста, как сделать, чтобы менюшка отображалась в соответствии со стилями artisteer   art-vmenu?
чтобы выводился не <ul сlass ="menu"> а <ul сlass ="art-vmenu">
В файле /modules/mod_virtuemart_categories\helper.php ищешь строчку
Код
$xml->addAttribute('class', 'menu'.$class_sfx);
и меняешь 'class' на 'art-vmenu'
Со span'ами не могу подсказать, т.к. так уже сложнее.
*

kunev

  • Захожу иногда
  • 118
  • 0 / 0
Да, в вашем случае - убрать "Каталог", может, увеличить на несколько пикселей ширину с блока с каталогом.
А по фильтрам посмотри по базе данных. У каждого модуля там должна быть запись, в которую сохраняются все настройки из админки.
Кстати не скажите, где корректно можно убрать Каталог, для полноты отображения строки? Буду признателен
*

laser585

  • Новичок
  • 2
  • 0 / 0
В файле /modules/mod_virtuemart_categories\helper.php ищешь строчку
Код
$xml->addAttribute('class', 'menu'.$class_sfx);
и меняешь 'class' на 'art-vmenu'
Со span'ами не могу подсказать, т.к. так уже сложнее.

Поменял 'menu' на 'art-vmenu', теперь отображается правильно <ul class="art-vmenu">. Спасибо (uralmas)
Может, кто подскажет, как со (спанами) вопрос решить...

как добиться, чтобы структуру выдавал следующую?
     
Код
<ul class="art-vmenu">  
   <li id="current" class="active item1">
       <a href="/index.php?option=com_content&amp;view=frontpage&amp;Itemid=1" class="active">
         <span class="l"></span>
         <span class="r"></span>
         <span class="t">Главная</span>
       </a>
   </li>
   <li class="art-vmenu-separator">
      <span class="art-vmenu-separator-span"> </span>
   </li>
   <li class="item55">
     <a href="http://m.ulsait.ru/">
        <span class="l"></span>
        <span class="r"></span>
        <span class="t">Магазин</span>
     </a>
   </li>   
</ul>
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
Кто-нибудь для находил решение для accordion'a в модуле вер. 2.1.0 для сворачивания/разворачивания по плюсу как для предыдущей версии было описано тут?
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
Кто-нибудь для находил решение для accordion'a в модуле вер. 2.1.0 для сворачивания/разворачивания по плюсу как для предыдущей версии было описано тут?
Тоже интересут.Только не "по плюсику" а по клику
*

uralmas

  • Захожу иногда
  • 228
  • 25 / 0
Цитировать
Только не "по плюсику" а по клику
Или так
*

alex2103

  • Новичок
  • 2
  • 0 / 0
Помогите пожалуйста
категории вообще не выводятся только в дефолтном режиме
что делать?
http://test.motochki.com/
вот пример слева VirtueMart Product Categories
« Последнее редактирование: 22.01.2011, 13:17:03 от alex2103 »
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Акардеон у меня почему то не работает,
когда жмеш на категорию 2 уровня то выкидывает на пустую страницу ъотя там должны быть категории следующего уровня.
какк быть
*

Chifu

  • Захожу иногда
  • 64
  • 5 / 0
Спасибо автору за модуль, очень хорошо заменяет все другие подобные модули, но у меня возникла проблема:


Выставляю модуль на пункт меню, работает всё норм, а при выборе Сортировать по... (стандартная сортировка товаров), меню уже не привязано и соответственно не отображается. Тоже самое происходит и при поиске товара. Как это исправить, или подобное автор не предусмотрел?
Если так и должно быть, тогда не вижу особых отличий от других подобных меню категорий, зачем тогда привязка к отпределённым пунктам меню? :(

забыл сказать, модуль поставлен отображаться только на нескольких страницах, а не на всём сайте.
« Последнее редактирование: 21.02.2011, 07:25:12 от Chifu »
*

Vujko

  • Осваиваюсь на форуме
  • 25
  • 4 / 1
danik.html
а возможно вашим модулем сделать подобное древовидное меню категорий как здесь
http://hobby4you.od.ua/index.php
*

dimonyara

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


Подскажите пожалуйста, как эти убрать маркеры слева от категорий?
*

Chifu

  • Захожу иногда
  • 64
  • 5 / 0
Я так понимаю, ни у кого подобных проблем не возникло. Я думал прикрепить по одному модулю к каждой главной категории, чтобы только подкатегории определённой категории выводились, но видно я или что-то не понимаю, или такого автор не планировал. Трудно держать всё меню открытым если категорий и подкатегорий больше 50-ти, а заставлять кликать покупателя 5+ раз не совсем правильно :(
*

garro

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Добрый день!
Благодарю разработчика за модуль!

Более-менее разобрался с работой стилей.
Цитировать
Теперь нужно чтобы аккордион раскрывался по клику, а не по фокусу, в смысле ТОЛЬКО по клику (убрать реакцию на mouseOver)!

Решением стало замена операторов 'mouseover' и 'mouseout' на 'click'
Не знаю насколько это корректно. Жду комментария разработчика!

Удалил кусок кода:
element.index = index;
            element.addEvent('click', function(){
               if (this.getChildren().filterByTag('ul')[0].offsetHeight == 0) {
                  accTimer = this.parentNode.Accordion.display.delay(200, this.parentNode.Accordion, $(this).index);
               }
            });
            element.addEvent('click', function(){
               if (window.accTimer) { clearTimeout(window.accTimer) };
            });

тоже работает, так что видимо 'click' просто бесполезен :-))

Вот ссылка на сайт, на котором я пытаюсь настроить этот модуль: http://www.grmarking.ru/index.php?option=com_content&view=article&id=59&Itemid=171

Куда пропал разработчик?  !
« Последнее редактирование: 23.02.2011, 20:50:15 от garro »
*

garro

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


Подскажите пожалуйста, как эти убрать маркеры слева от категорий?

Это нужно в стиле шаблона прописать типа:
.my-menu {
   list-style: none;
}
.my-menu ul {
   list-style: none;
}

Где ".my-menu" это название класса суффикса, то которое Вы прописываете в настройках компонента.
*

garro

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Кто-нибудь для находил решение для accordion'a в модуле вер. 2.1.0 для сворачивания/разворачивания по плюсу как для предыдущей версии было описано тут?

Решение подходит такое же, как было описано ранее
Залез в фаил accordion_assets.php, который лежит в /modules/mod_virtuemart_categories/tmpl/ и удалил кусок кода:
element.index = index;
            element.addEvent('click', function(){
               if (this.getChildren().filterByTag('ul')[0].offsetHeight == 0) {
                  accTimer = this.parentNode.Accordion.display.delay(200, this.parentNode.Accordion, $(this).index);
               }
            });
            element.addEvent('click', function(){
               if (window.accTimer) { clearTimeout(window.accTimer) };
            });
Работать будет по клику на <span></span> (красный квадратик из описания здесь http://joomlaforum.ru/index.php/topic,109669.150.html)

У меня (пока ещё) работает.
« Последнее редактирование: 23.02.2011, 20:36:44 от garro »
*

azion

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
всем привет вот наконец то нашел похожее  хочу сделать список категории похожий только немного усовершенствовать как тут  http://mycapital.biz/contacts Но начал разбираться что куда и не получается у меня  в R:\home\localhost\www\vso\modules  я не нашел  mod_virtuemart_categories потом скачал архив который выложен в верху топика  начал ставить через установку   не ставится объясните  не образованному популярно что куда и как ставить а то запутался Подскажите что не так делаю
*

garro

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
всем привет вот наконец то нашел похожее  хочу сделать список категории похожий только немного усовершенствовать как тут  http://mycapital.biz/contacts Но начал разбираться что куда и не получается у меня  в R:\home\localhost\www\vso\modules  я не нашел  mod_virtuemart_categories потом скачал архив который выложен в верху топика  начал ставить через установку   не ставится объясните  не образованному популярно что куда и как ставить а то запутался Подскажите что не так делаю

Не устанавливается по какой причине, что пишет?
Установка на локалке, права на запись в папки не закрыты?
*

xzet

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
подскажите в каком из CSS файлов производить настройки что бы при развертывании категорий аккардеоном активные в данный момент подцвечивались другим цветом.
за ранее спасибо.
*

garro

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
подскажите в каком из CSS файлов производить настройки что бы при развертывании категорий аккардеоном активные в данный момент подцвечивались другим цветом.
за ранее спасибо.

Любой CSS фаил относящийся к шаблону, в котором делаешь. В большенстве случаев это theme.css или style.css.
В этой теме автор скрипта уже говорил как это делать, но можно и самому написать стиль.
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0
подскажите пожалуйста, как сделать?

меню:
пункт1
-подпункт1.1
-подпункт1.2
пункт2
-подпункт2.1

хочется чтобы принажатии на пункт открывалось меню без перезагрузки страницы и чтобы этакнопка никуда не вела т.е. просто раскрывалоь меню в-пределах модуля (нажал на родителя и открылись подпункты но в пределах модуля, чтбы на самой сранице ничего не обновлялось
*

xzet

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Любой CSS фаил относящийся к шаблону, в котором делаешь. В большенстве случаев это theme.css или style.css.
В этой теме автор скрипта уже говорил как это делать, но можно и самому написать стиль.

cпасибо разобрался,сначала просто не в тот файл ксс писал строки эти
*

Chifu

  • Захожу иногда
  • 64
  • 5 / 0
С предыдущим вопросом разобрался.

Теперь другая задача, так как я не силён в JS и Mootools, прошу подсказать, как правильно изменить код в файле "accordion_assets.php" чтобы "span" элементу дать какой-то "class", а при клике (с кликом объяснять не надо) этот класс менялся бы.
Это нужно, чтобы помжно было повесить на элемент картинку, которая менялась бы при открытии и закрытии категории в аккордеоне.

Спасибо.
*

garro

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Для Chifu
Это делается не в "accordion_assets.php", а в стилях, класс для span не обязателен, потому-что меняется класс у элемента списка - "li".
В фйле *.css прописываете что вроде этого:

ul.my-menu li span {
   position: absolute;
   display: block;
   width: 12px;
   height: 12px;
   background: url(../images/submenu_level1_item_parent.png) 0px -6px no-repeat; /*путь к картинке + координаты по x и y*/
   right: 2px;
   top: 2px;
}

ul.my-menu li.expanded span {
   position: absolute;
   display: block;
   width: 12px;
   height: 12px;
   background: url(../images/color/blue/submenu_level1_item_parent.png) 0px -106px no-repeat;
   right: 2px;
   top: 7px;
}

Класс ".my-menu" - это тот суффикс, который Вы прописываете в настройках компонента (в админке).
Остольные параметры и путь к картинке вставляете свои!



 и для kpk17

Насколько я понимаю средствами VirtueMart так не сделаешь. Можно сделать средствами Joomla - родительская категория делается как разделитель (separator). И делать всё меню средствами Joomla.
Либо настраивать этот компонент, только раскрытие будет не по пункту меню, а по картинке заключённой в <span></span>
Если напрячься, то можно деактивировать ссылку родительского элемента.

Читайте внимательнее эту ветку, ответы на эти вопросы уже дважды описывались здесь!




.
*

indigo

  • Захожу иногда
  • 71
  • 1 / 0
Да можно. для этого вопервых перекрываем accordion.php и удаляем вот этот код:

Код: javascript
					element.index = index;
element.getChildren().filterByTag('a')[0].addEvent('mouseover', function(){
if (this.getNext().offsetHeight == 0) {
accTimer = this.parentNode.parentNode.Accordion.display.delay(200, this.parentNode.parentNode.Accordion, $(this.parentNode).index);
}
});
element.getChildren().filterByTag('a')[0].addEvent('mouseout', function(){
if((accTimer != undefined)){clearTimeout(accTimer)};
});
еще понадобится наверно прописать чтоб при сворачивании/разворачивании менялся класс елемента, чтоб менять плюс на минус.

И во вторых прописываем css
Код: css
.menu li{
    position: relative;
}
.menu li a{
    display: block;
    background: #eee;
    border-top: 1px solid #ccc;
    position: relative;
}
.menu li span{
    position: absolute;
    display: block;
    width: 10px;
    height: 10px;
    background: #f00;
    right: 5px;
    top: 5px;
}
.menu li li a{
    border: none;
}
Во-первых, конечно же спасибо за модуль. А во-вторых, в версии 2.1.0_final в файле акордион я не нашёл этого участка кода, он уже удалён?
В каком именно файле CSS нужно это вписать, в файле стилей модулей?
Цитировать
прописать чтоб при сворачивании/разворачивании менялся класс елемента, чтоб менять плюс на минус.
Можете сказать, это что именно и куда прописывать?
*

xzet

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
еще вопрос возник почему когда 2 модуля на сайте одновременно,то в первом аккордеон нормально раскрывает категории а во втором они просто открыты постоянно?
*

garro

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Цитировать
Во-первых, конечно же спасибо за модуль. А во-вторых, в версии 2.1.0_final в файле акордион я не нашёл этого участка кода, он уже удалён?
Он находится в файле accordion_assets.php

Цитировать
В каком именно файле CSS нужно это вписать, в файле стилей модулей? Можете сказать, это что именно и куда прописывать?
Прочитайте пожалуйста выше, это файлы стиля, относящиеся к шаблону!
*

garro

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Цитировать
еще вопрос возник почему когда 2 модуля на сайте одновременно,то в первом аккордеон нормально раскрывает категории а во втором они просто открыты постоянно?
Для каждого экземпляра модуля нужно прописывать свой суффикс!
*

indigo

  • Захожу иногда
  • 71
  • 1 / 0
Он находится в файле accordion_assets.php
Прочитайте пожалуйста выше, это файлы стиля, относящиеся к шаблону!
спасибо.
*

vol4ok

  • Новичок
  • 3
  • 0 / 0
вопрос уже поднимался, но все же...
не показывается количество товара в категориях при выбранном шаблоне модуля "accordion"
галочка в настройках магазина стоит, в стандартном меню категорий магазина кол-во товара показывается...
подскажите решение
*

neo3833

  • Захожу иногда
  • 52
  • 2 / 1
поддерживаю, такой же вопрос.
как отобразить кол-во товаров в категории рядом с пунктом меню ( названием категории)?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор Grig2009

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

Автор aleks_yug

Ответов: 97
Просмотров: 28027
Последний ответ 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
от Хусен