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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Чего не хватает в ЖШ? Лично мне для контроля за алиасами не хватает соответствующей колонки в указанных таблицах административной части. Чтобы узнать прописан ли алиас вообще, и что там прописано - надо лезть в редактирование соответствующего товара, производителя или категории. Мягко говоря - неудобно. Как оказалось добавить соответствующую колонку совсем просто. На примере категорий:

В файлt administrator/components/models/categories.php меняем в 43 строке:

Код
$query = "SELECT `".$lang->get('name')."` as name,`".$lang->get('short_description')."` as short_description, category_id, category_publish, ordering, category_image FROM `#__jshopping_categories`

на

Код
$query = "SELECT `".$lang->get('name')."` as name,`".$lang->get('alias')."` as alias, `".$lang->get('short_description')."` as short_description, category_id, category_publish, ordering, category_image FROM `#__jshopping_categories`

в 88 строке:

Код
$query = "SELECT ordering, category_id, category_parent_id, `".$lang->get('name')."` as name, `".$lang->get('short_description')."` as short_description, category_publish, category_image FROM `#__jshopping_categories`

на

Код
$query = "SELECT ordering, category_id, category_parent_id, `".$lang->get('name')."` as name, `".$lang->get('alias')."` as alias, `".$lang->get('short_description')."` as short_description, category_publish, category_image FROM `#__jshopping_categories`

И в файл administrator/components/views/category/tmpl/list.php добавляем:

в заголовки таблицы что то типа

Код
    <th width = "100" align = "left">
        <?php echo JHTML::_('grid.sort', _JSHOP_ALIAS, 'alias', $this->filter_order_Dir, $this->filter_order); ?>
    </th>

и собственно выводим значения

Код
    <td>
        <?php echo $category->alias;?>
    </td>

Насладжаемся колонкой alias в таблице Категории.

Ну и собственно вопрос к гурам... а как бы всё это облагородить в виде плагина?
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
проще хаком чтобы делали.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Да вот хаком то как раз и не хочется. Плагин поставил раз и забыл, а хак после каждого обновления отслеживать надо.
*

dmitry_stas

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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
во вью нет возможности добавить колонки плагином

А эта невозможность принципиальная и проистекает из архитектуры системы или можно попросить разработчиков добавить обработку плагинами?

Цитировать
что обновления не будут затрагивать сам шаблон как таковой

Дык в шаблон то как раз никаких изменений и не вносится.
« Последнее редактирование: 31.07.2013, 21:43:31 от jorevo »
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
Дык в шаблон то как раз никаких изменений и не вносится.
даладно :)
а  это что?
Цитировать
в заголовки таблицы что то типа

Код
    <th width = "100" align = "left">
        <?php echo JHTML::_('grid.sort', _JSHOP_ALIAS, 'alias', $this->filter_order_Dir, $this->filter_order); ?>
    </th>

проще хаком поверьте...
ну или попросить разработчиков добавить :)
тем более что редактировать и удалить колонки там... ну... мягко говоря не к месту.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
nevigen, эти изменения вносятся в файл administrator/components/views/category/tmpl/list.php - к шаблону не имеет никакого отношения. К шаблону фронтэнда. А шаблона админки в ЖШ нет.

Цитировать
тем более что редактировать и удалить колонки там... ну... мягко говоря не к месту.

Не к месту где? И почему?
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
колонки с иконкой редактировать и удалить не к месту в существующей таблице товаров, и категорий. и редактировать в производителях. простые дубли функциональные.
редактировать клик по названию.
удалить чекбокс слева и вверху кнопка

насчет изменений. шаблонов и не шаблонов :)

я совершенно не против....
и даже за...
попробуйте обратится к разрабам пусть внесут в сток версию...
я свой + поставлю :)
я бы предпочел видеть вместо редактировать и удалить +1 полезную колонку.

Хотя я например также добавил бы в колонку дата создания и дату обновления.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
эти изменения вносятся в файл administrator/components/views/category/tmpl/list.php - к шаблону не имеет никакого отношения. К шаблону фронтэнда. А шаблона админки в ЖШ нет.
это он и есть - шаблон админки. как я уже сказал точно также переопределяемый в папочке HTML как и шаблон фронта. да только вот следить за ним надо будет точно также, как если бы это был хак.

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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
это он и есть - шаблон админки. как я уже сказал точно также переопределяемый в папочке HTML как и шаблон фронта.

А вот это для меня новость. Можно более подробно - как переопределить кусочек шаблона для админки на примере administrator/components/views/category/? Что куда положить, что куда прописать? И что за папка HTML - может tmpl?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а как переопределять шаблоны модулей, компонентов и прочего на фронте в папке HTML шаблона Joomla вы знаете? если нет - то в Google Joomla переопределение шаблона. а для админки все точно также, только работаете не с /templates/Ваш шаблон/html, а с administrator/templates/Ваш шаблон(bluestork или hathor или что там у вас стоит)/html
« Последнее редактирование: 01.08.2013, 15:09:38 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Чот я вообще запутался... При чём здесь шаблон жумловской админки? Речь то вроде шла об изменении внутри views... как это всё связано с шаблонами жумловской админки?
*

dmitry_stas

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

dmitry_stas

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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
ну что, как успехи с распутыванием гордиева узла? разобрались?

Ну теорию про всякие MVC почитал, усваиваю потихоньку. Неожиданно массовый ДДОС на Joomla и вп карты попутал, сайты лежат, дышат с трудом. Вот разберусь, вернусь - вопросов ещё есть. )
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин - Вывод значения поля из таблицы продуктов в корзине JoomShopping

Автор draff

Ответов: 3
Просмотров: 2192
Последний ответ 26.02.2024, 07:00:01
от kit2m2
Плагин - Количество товаров в категории [Скачать]

Автор kit2m2

Ответов: 8
Просмотров: 2783
Последний ответ 06.07.2021, 18:31:46
от kit2m2
Прописать rel canonical в товары с атрибутами в url

Автор Unclesem

Ответов: 4
Просмотров: 658
Последний ответ 24.02.2021, 20:50:13
от Unclesem
Плагин для покупки в категории товара JoomShopping 4, с применением ajax

Автор draff

Ответов: 14
Просмотров: 1274
Последний ответ 18.05.2020, 06:29:43
от draff
Получить ID категории в шаблоне checkout

Автор stas_rsv

Ответов: 28
Просмотров: 1184
Последний ответ 30.03.2020, 11:04:11
от stas_rsv