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

Sticky

  • Новичок
  • 4
  • 0 / 0
Собственно сабж. Кто-нибудь в курсе как добавлять несколько разных фоток для одного товара чтобы его не клонировать?
*

Adam Bazaroff

  • Захожу иногда
  • 112
  • 10 / 5
Re: Несколько фото для одного товара
« Ответ #1 : 24.07.2006, 19:51:40 »
Чтобы добавить дополнительные картинки/файлы к товару, нужно при его редактировании зайти в меню
Товары > Файловый менеджер > Добавить картинку/файл

Re: Несколько фото для одного товара
« Ответ #2 : 25.07.2006, 20:12:46 »
Ответа на этот вопрос нету даже на официальном форуме VM и Joomla
Как уже говорилось Товары > Файловый менеджер > Добавить картинку/файл . Колличество картинок к товару вроде как не ограничено....Единственное отображатся будет на странице товара только одна... далее ссылка посмотреть больше изображений.........
http://virtuemart.net/index.php?option=com_smf&Itemid=71&topic=18473.0
Товарищи, ну не ленитесь что ли официальный форум почитать. :)
Я пока в первый раз настраивал и устанавливал VirtueMart легко это нашел.

Re: Несколько фото для одного товара
« Ответ #3 : 31.07.2006, 19:37:54 »
А можно эти дополнительные фотографии про заливке CSV указать?
*

Adam Bazaroff

  • Захожу иногда
  • 112
  • 10 / 5
Re: Несколько фото для одного товара
« Ответ #4 : 31.07.2006, 23:46:44 »
Стандартными средствами - нельзя. Помогут только "хаки".
*

KillDead

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Несколько фото для одного товара
« Ответ #5 : 10.09.2006, 15:26:04 »
Посмотрел, хакнул, но как загружать через CSV. ???
*

tug

  • Захожу иногда
  • 333
  • 40 / 4
Re: Несколько фото для одного товара
« Ответ #6 : 11.09.2006, 02:38:44 »
Наксколько мне известно, пока никак.
*

tug

  • Захожу иногда
  • 333
  • 40 / 4
Re: Несколько фото для одного товара
« Ответ #7 : 21.05.2007, 10:52:07 »
Впринципе могу к своему расширению для загрузки прикрутить фичу добавления картинок через CSV, но картинки естественно придется отдельно через FTP лить.
*

KillDead

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Несколько фото для одного товара
« Ответ #8 : 04.07.2007, 16:24:12 »
Сделал, но вышло слишком геморойно, хотя и элементароно.
Пользуясь заметками путника http://putnik.net.ua/index.php/comps/web/2006/05/31/virtuemart-kak-dobavit-pole-k-tovaru/ просто добавляем ещё поля для дополнительных картинок- маленькое и большое.
Код для shop.product_details.php получился такой:
Цитировать
  $product_image2 = "";

if ( $db_product->f('more_im1') ) {
 
   $more_im1 = $db_product->f("more_im1");
   $more_im = $db_product->f("more_im");

  if ( $db_product->f("product_url") ) {
    $product_image2 = "<a href=\"". $db_product->f("product_url")."\" title=\"".$product_name."\" target=\"_blank\">";
    $product_image2 .= $ps_product->image_tag($more_im, "alt=\"".$product_name."\"", 0);
    $product_image2 .= "</a>";
  }
      $text = $ps_product->image_tag($more_im1, "alt=\"".$product_name."\"", 1);

   $product_image2 = $VM_LANG->_dopfot;
   $product_image2 .= vmPopupLink( $more_im, $text, 1000, 1000 );

   
   
   } else { $product_image2 = "";}
Чуть ниже:
Цитировать
$template = str_replace( "{product_image2}", $product_image2, $template );
$template = str_replace( "{more_im}", $more_im, $template );
$template = str_replace( "{more_im1}", $more_im1, $template );
И естественно кладём в flypage.php переменную {product_image2}.
more_im и more_im1- большая и маленькая картинка. Путь к ним загружается как обычно через cvs.
Таких переменых можно сделать сколько угодно.
Недостатки кода- выше 07 версии применять нельзя, т.к. новые поля магазин не поддерживает. И дополнительная загрузка от tug не подходит по той же причине.
Демо:
http://www.knim.jino-net.ru/index.php?page=shop.product_details&flypage=shop.flypage&product_id=38&category_id=14&manufacturer_id=0&option=com_virtuemart&Itemid=200
« Последнее редактирование: 06.07.2007, 14:45:40 от KillDead »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Количество просмотров товара VirtueMart Существует?

Автор grishin

Ответов: 38
Просмотров: 12291
Последний ответ 22.08.2020, 08:44:29
от rsn
Переход на https VirtueMart 1.1.4 проблемы с фото

Автор Sergey1984

Ответов: 4
Просмотров: 3546
Последний ответ 25.10.2018, 20:56:54
от Sergey1984
VirtueMart 1.1.4 и https дополнительные фото товаров

Автор Sergey1984

Ответов: 0
Просмотров: 3069
Последний ответ 23.10.2018, 19:58:44
от Sergey1984
VirtueMart. Вывести названия дополнительных изображений в карточке товара

Автор Delik

Ответов: 3
Просмотров: 4835
Последний ответ 04.09.2018, 10:42:46
от Eholov
Как сделать импорт товара на VirtueMart?

Автор Усач911

Ответов: 0
Просмотров: 1152
Последний ответ 07.11.2017, 22:03:18
от Усач911