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

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
чета типа
Код: css
#accordion img{
    vertical-align: middle;
    margin: 4px;
    float:none;
}
#accordion > li > a{
    text-decoration: none;
}
#accordion > li > a span{
    display:inline-block;
    vertical-align: middle;
    width: 170px;
}
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

kiriamba

  • Захожу иногда
  • 86
  • 0 / 0
подскажи пожалуйста
на сайте www.omilo.ru поставил меню но как сделать чтобы оно раскрывалось только тогда когда кликаеш на категорию ?
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0
жаль во втором вирте не работает
*

Misterfox

  • Осваиваюсь на форуме
  • 43
  • 2 / 0
Подскажите пожалуйста, как сделать аналогичное меню:
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Misterfox, а где возникают трудности. Это вид шаблона MooTree по умолчанию. Поставь этот шаблон в параметрах модуля и все. Требует мутулз, так что если он у тебя вырезан на сайте (например чтоб использовать jquery), то работать не будет.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Misterfox

  • Осваиваюсь на форуме
  • 43
  • 2 / 0
Misterfox, а где возникают трудности. Это вид шаблона MooTree по умолчанию. Поставь этот шаблон в параметрах модуля и все. Требует мутулз, так что если он у тебя вырезан на сайте (например чтоб использовать jquery), то работать не будет.
В том то и дело, что если выбрать MooTree, то у меня тупо список категорий отображается
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Требует мутулз, так что если он у тебя вырезан на сайте (например чтоб использовать jquery), то работать не будет.
Так что давай ссылку если сам  не можешь разобраться.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

vertix

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
У меня несколько категорий товаров, мне нужно чтоб например, в категории ламинат был одна меню, в категории паркет другая менюшка и так далее. Но для этого нужно как то каждую категорию сделать отдельным пунктом меню, а как. Подскажите пожалуйста.
*

vertix

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Нашел мне кажется очень серьезную ошибку или просто сильно туплю, ставлю ваш модуль и стандартный Joomla модуль с хлебными крошками,  когда я перехожу по ссылкам категорий со стандартного модуля категорий в виртуалмарте то хлебные крошки работаю отлично, когда же с вашего модуля хлебные крошки тупят, так как почему то, ваш модуль формирует свою ссылку на категорию.
Стандартная ссылка
index.php?page=shop.product_details&flypage=flypage.tpl&product_id=29&category_id=6&option=com_virtuemart&Itemid=9
Эта же страница но перешел на нее с вашего модуля, ссылка изменилась
index.php?page=shop.product_details&product_id=32&flypage=flypage.tpl&pop=0&option=com_virtuemart&Itemid=2
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
А в параметрах указана Привязка к пункту меню? Там должен быть указан пункт меню ведущий на компонент VirtueMart
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

sek

  • Новичок
  • 1
  • 0 / 0
Я прикручиваю модуль, но с ним проблема.
ДВАЖДЫ слева показывается пункт - Главная.
Если привязываю новому пункту меню, ссылающемуся на компонент VirtueMart, то всё равно повторно выводится наименование пункта меню.

Простите, РАЗОБРАЛСЯ.
ОЧЕНЬ ХОРОШИЙ МОДУЛЬ, СПАСИБО ЗА НЕГО!
« Последнее редактирование: 24.02.2012, 02:39:46 от sek »
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
Пробовал ли кто переделать на jquery? Как вообще можно всунуть jquery вместо мутулза, возможно ли такое, для этого модуля?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Пробовал ли кто переделать на jquery? Как вообще можно всунуть jquery вместо мутулза, возможно ли такое, для этого модуля?
Вопрос - зачем? Ведь VirtueMart работает на mootools, так что от этого фреймворка все равно не откажешься.
Если же всетаки нужно, то сам модуль модифицировать даже не обязательно. Нужно перекрыть лэйаут в своем шаблоне и переписать код на jquery (там отсилы строчек 10 получится). Это для аккордиона. Для mootree сделать аналог на jquery гораздо сложнее...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
danik, чтобы сделать по шаблону что то такое http://ruseller.com/lessons.php?rub_id=29&id=459 ......вообще возможно к примеру такой шаблон себе сделать, но на jquery и вертикальный...например такое http://www.dynamicdrive.com/dynamicindex1/ddsmoothmenu.htm
Спрашиваю, потому, что под jquery есть куча готовых классных менюшек, которые можно легло подстроить под свои нужды, а с mootools никогда не работал....
« Последнее редактирование: 28.02.2012, 14:54:31 от den_caruk »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Посмотрел я примеры. Ни на ruseller ни тем более на динамикдрайве не понял зачем там вообще используется javascript. Этож все делается на чистом CSS.
Единственное, на CSS (пока) не сделать анимации, ее надо делать на js. Но блин, подключать jquery тупо ради создания fadeIn/fadeOut эффекта это глупо.
Вот пример на mootools как можно плавно растворять и проявлять вновь элемент наводя на него мышкой:
Код: javascript
$("id-of-my-element").addEvents(
{
mouseover: function(e){
this.fade('out');
},
mouseleave: function(e){
this.fade('in');
}
}
);
Этот пример легко переделать для плавного проявления/исчезания пунктов меню. Но сначала его надо сделать на CSS, а уж дальше анимировать на js (пока css3 не вошел в массы)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

den_caruk

  • Захожу иногда
  • 64
  • 2 / 0
спасибо, буду пробовать...там уже есть готовый CSS код, остается под свои нужды подредактировать...а насчет мутулза.....я так  понимаю, его подключать не надо, он там по умолчанию, остается только код анимации привязать (и фреймворк не надо подключать)? иду танцевать с бубном)
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
За вывод аккордиона в моем модуле отвечает файл /tmpl/accordion.php .
В нем ничего особого - описывается функция-декоратор для xml-дерева для добавления нужных атрибутов. Ничего связанного с javascript нет. В конце файла идет подключение файла accordion_assets.php :
Код: php
require JModuleHelper::getLayoutPath('mod_virtuemart_categories', 'accordion_assets')
Вот уже в нем есть такие строчки:
Код: php
// require mootools
JHTML::_('behavior.mootools');

// get document
$document =& JFactory::getDocument();
$document->addScriptDeclaration($script);
Тоесть требуем мутулз, и подключаем свой скрипт содержащийся в вышеобъявленной переменной $script
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

FLAGG

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
чета типа
Код: css
#accordion img{
    vertical-align: middle;
    margin: 4px;
    float:none;
}
#accordion > li > a{
    text-decoration: none;
}
#accordion > li > a span{
    display:inline-block;
    vertical-align: middle;
    width: 170px;
}
Спасибо:)
*

alpha-helix

  • Захожу иногда
  • 80
  • 1 / 0
Стилизую подпункты. Нужно чтобы один от другого был отделен запятой
Для элементов li в CSS прописываю
Код
li::after{
content: ",";
}
Получаю следующую картину :
(http://prntscr.com/6pb2f)
Т.е. запятая отделена от текста. padding и margin по  нулям.


Код
<li class=" catid126">
  <a href="/catalog/category/126">Кронштейны</a>
  <::after>
</li>
Это код подпункта этого самого меню. Если в FireBug его вытягиваю в строчку - удаляю все пробелы и переносы строк, то все становится нормально


Подскажите пожалуйста как правильнее запятую к тексту притянуть.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Да уж, не ожидал что пробелы могут помешать, поэтому даже такой опции не сделал, хотя даже в джумловском меню опция есть.
Так что лезьте в helper.php, 52-я строка:
Код: php
echo JFilterOutput::ampReplace( $xml->toString(true) )
Поменяйте true на false, модуль будет генериться без пробелов между тэгами
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

dreamer85

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
почему стандартный модуль формирует нормальное дерево (пример 1), а этот модуль показывает все вперемешку (пример 2)?



*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Чет не сталкивался с таким безобразием. Да, в модуле имеется небольшая проблема связанная с неправильной сортировкой.
Но у вас что-то другое. И откуда эти странные пробелы? И цифры, вы что прям в название категории вбиваете? Помоему вы чегото перемудрили...
Другие варианты отображения, например дефолтный, нормально работают?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

dreamer85

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
список категорий выгружаеться с  1с модулем.  в вашем модуле  все 3 темы почему то так отображают все в перемешку
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
У вас походу все категории одного уровня. Тоесть реальной вложенности нет, она имитируется пробелами. У меня же модуль не знанимается подсчетом пробелов, он выводит так как есть на самом деле. Дефолтный модуль как раз помоему подсчитывает пробелы..
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

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

alpha-helix

  • Захожу иногда
  • 80
  • 1 / 0
Да уж, не ожидал что пробелы могут помешать, поэтому даже такой опции не сделал, хотя даже в джумловском меню опция есть.
Так что лезьте в helper.php, 52-я строка:
Код: php
echo JFilterOutput::ampReplace( $xml->toString(true) )
Поменяйте true на false, модуль будет генериться без пробелов между тэгами

О, спасибо большое. Теперь все отлично
*

webleer

  • Новичок
  • 4
  • 0 / 0
Как сделать так, чтобы ссылки категорий товара второго уровня изменить.

Есть категория товара "Самокаты" и в ней подкатегория "Самокаты для взрослых"

Пункт меню "Самокаты для взрослых" выдает ссылку:  www.saite.ru/samokaty-dlya-vzroslyh

А нужно чтобы было www.saite.ru/samokaty/samokaty-dlya-vzroslyh
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Это не к модулю вопрос а к роутеру VirtueMart, ссылками занимается он.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
У меня вообще не работает...
То есть, устанавливаться, а выбор параметров нет?
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

Amid1210

  • Осваиваюсь на форуме
  • 35
  • 0 / 0
Как в последней версии сделать что бы категория открывалась не при наведении, а при клики.
Если можно расскажите подробнее, потому что я только начинаю все изучать.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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
от Хусен