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

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
Здравствуйте!
Обнаружила, что в модуле категории товаров (mod_jshopping_categories) не отображается краткое описание категорий, хотя в самом магазине оно отображается.
Подскажите, пожалуйста, что нужно, чтобы он определял и выводил это описание.
Содержимое файла templates/мойшаблон/html/mod_jshopping_categories/default.php прилагаю

Код
<?php
  foreach($categories_arr as $curr){
      $class = "jshop_menu_level_".$curr->level;
      if ($categories_id[$curr->level]==$curr->category_id) $class = $class."_a";     
      ?>
      <div class = "<?php print $class?>">
            <a href = "<?php print $curr->category_link?>"><?php print $curr->name?><br/>
                <?php if ($show_image && $curr->category_image){?>
                    <img style = "vertical-align:middle;" src = "<?php print $jshopConfig->image_category_live_path."/".$curr->category_image?>" alt = "<?php print $curr->name?>"
                         />
                <?php } ?>
               <p class="category_short_description"><?php print $category->short_description?></p>
            </a>
      </div>
     

  <?php
  }
?>
Слишком сконцентрированное внимание необходимо разбавлять действием.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ничего по идее не нужно.
Код
<?php print $category->short_description?>
это и есть вывод краткого описания
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
ничего по идее не нужно.
Код
<?php print $category->short_description?>
это и есть вывод краткого описания
да вот не хочет выводиться...причем, на нескольких сайтах, никак с друг другом не похожих и не связанных...
Думала - может какие настройки, которых я волшебным образом не вижу... ;D но, ничего не нахожу
И, кстати, да - этот кусок в инспекторе выводится...но, пустой.
Слишком сконцентрированное внимание необходимо разбавлять действием.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а краткое описание точно заполнено у категорий? может вы перепутали, и заполнено только полное?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
а краткое описание точно заполнено у категорий? может вы перепутали, и заполнено только полное?

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

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
это странно. mod_jshopping_categories откуда качали? может быть версии не сходятся, например скачали для Joomla 2.5, а у вас 3-я?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
это странно. mod_jshopping_categories откуда качали? может быть версии не сходятся, например скачали для Joomla 2.5, а у вас 3-я?
ну не на столько...но, это очень хорошая мысль - установить новый модуль. Спасибо! Сейчас попробую - отпишусь
Слишком сконцентрированное внимание необходимо разбавлять действием.
*

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
dmitry_stas, увы. Посмотрела - ситуация такая, что по умолчанию в модуле нет вообще краткого описания.

(наверное, я когда-то давно дописала   <p class="category_short_description"><?php print $category->short_description?></p> как в файле вывода главной категории магазина. Но, поскольку, востребовалось это только сейчас - вот и застряла)

Изначально такое:

Код
<?php
  foreach($categories_arr as $curr){
      $class = "jshop_menu_level_".$curr->level;
      if ($categories_id[$curr->level]==$curr->category_id) $class = $class."_a";     
      ?>
      <div class = "<?php print $class?>">
            <a href = "<?php print $curr->category_link?>"><?php print $curr->name?>
                <?php if ($show_image && $curr->category_image){?>
                    <img align = "absmiddle" src = "<?php print $jshopConfig->image_category_live_path."/".$curr->category_image?>" alt = "<?php print $curr->name?>" />
                <?php } ?>
            </a>
      </div>
  <?php
  }
?>
Слишком сконцентрированное внимание необходимо разбавлять действием.
*

fbr

  • Завсегдатай
  • 1672
  • 206 / 7
Да, действительно, в модуле его нет..
нужно вручную добавить  (нужном вам теге):
Код
<?php if ($curr->short_description) { ?>
<div><?php print $curr->short_description ?></div>
<?php } ?>
*

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
<?php if ($curr->short_description) { ?>
<div><?php print $curr->short_description ?></div>
<?php } ?>
о! так заработало!
а я писала похожее, но <?php print $curr->category_short_description ?> - почему? Теперь и сама не пойму.
Хотя, признаюсь, не сильна в этом. Спасибо всем за участие!

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

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
тьфу ты :) я и не обратил внимание, что в цикле $curr, а выводится $category :) ну да, конечно дело в этом. $category то там и в помине нет.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
тьфу ты :) я и не обратил внимание, что в цикле $curr, а выводится $category :) ну да, конечно дело в этом. $category то там и в помине нет.
каюсь, ибо я Вас с пути и сбила  ::)
Слишком сконцентрированное внимание необходимо разбавлять действием.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Вывод 3-х первых картинок в списке товаров категории

Автор rudoy24

Ответов: 30
Просмотров: 11988
Последний ответ 19.07.2024, 11:41:28
от juleczka
Смена фото при наведении в списке товаров категории

Автор Taatshi

Ответов: 57
Просмотров: 6146
Последний ответ 15.06.2023, 15:53:25
от Akeksandr
Вывод товаров из всех подкатегорий на странице категории

Автор Faina

Ответов: 351
Просмотров: 67203
Последний ответ 09.09.2022, 10:12:52
от kit2m2
Удаление изображения категории внутри категории

Автор Concolor

Ответов: 34
Просмотров: 3705
Последний ответ 10.04.2021, 18:11:02
от Concolor
Вырезать вывод картинок с категориями и названиями в category_default.php

Автор Evgenii_web

Ответов: 5
Просмотров: 880
Последний ответ 26.01.2020, 15:27:14
от Evgenii_web