Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 558 Просмотров
*

kkmspb

  • Новичок
  • 6
  • 0 / 0
Здравствуйте!
Не могу , туплю. Недавно с Joomla. 
Надо для админки плагин задействовать, то есть как-то заставить работать.

Если плагин в составе компонента, это вижу на примере (com_actionlogs), что плагин работает, то есть его можно подписать на событие открытия заказа в JoomShopping.

Но  я наверное пошел неправильным путем - создал не компонент, а модуль для админки и плагин, который устанавливается вроде как для site (а других и не бывает?...).

В общем в этой схеме плагин вроде подключается в модуле (админки) ок:
PluginHelper::getPlugin(''  , 'plg_payment_acceptance');   // ok
PluginHelper::isEnabled('' , 'plg_payment_acceptance');  // true
     
Но подписка на событие на работает...

*

sivers

  • Живу я здесь
  • 2549
  • 348 / 0
Плагины в Joomla устанавливаются общесистемно. Т.е. для них нет разницы что вы открываете - фронт или админку. Если вам надо только в одной части отрабатывать, то приходится в самом плагине писать условие на проверку фронт это или админка.

Чтоб работал плагин, надо:
1. Установить и АКТИВИРОВАТЬ плагин (т.к. по умолчанию плагин остается отключенным после установки).
2. Вызвать событие, обработчик которого есть в плагине. Это может быть либо общесистемное событие, либо ваше собственное, в этом случае вызвать его можно так:
Код
$app->triggerEvent('onBeforeOrderSave', array($cid, $post));
Пример генерации события сохранения заказа с передачей 2-х параметров в плагин.
3. В некоторых ситуациях, например, при вызове плагина из своего скрипта, когда не было полной инициализации Joomla, может потребовать предварительный импорт плагина (чтоб система знала о нем), а потом уже генерация события. Импорт плагина:
Код
PluginHelper::importPlugin('system', 'infobot');
здесь infobot - это имя плагина, а system - группа плагина.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

kkmspb

  • Новичок
  • 6
  • 0 / 0
Код
PluginHelper::importPlugin('system', 'infobot');
здесь infobot - это имя плагина, а system - группа плагина.

Спасибо за ответ!

В общем посоздавал компоненту (в админке), модуль (в админке), плагин ('system'), событие начал отлавливать гут. Но в башке путаница. Зачем столько сущностей. Да еще в зависимости от group="xxxx" установка по разным директориям идет.

implements SubscriberInterface начал использовать для класса плагина.

1. Я правильно понимаю, что если плагин устанавливать в 'system', то он всегда будет стартовать на каждой странице.

2. Мне бы в идеале только на странице редактирования заказа (вот примерно здесь /administrator/index.php?option=com_jshopping&controller=orders&task=show&order_id=4) добавить свой функционал:

2.1 пару кнопок Наличный и Банк.Карта
2.2 AJAX запрос на localhost:44735, ждем ответ (красиво с окном ожидания например на jquery_ui)
2.3 получаем ответ, изменяем статус заказа, сохраняем заказ.

3. Код JoomShopping править не хочу

Не понимаю как правильнее - сделать модуль (в админке) и плагин в систему?

Думаю модуль использовать. Далее пользователь его может пометить в top например, то есть он будет сверху окна заказа допустим.

В модуле надо как-то показывать его только в варианте страницы с GET option=com_jshopping&controller=orders&task=show. Это не проблема.

Но вот странно событие onBeforeShowOrder из Joomshopping приходит в плагин раньше чем выводится Модуль.

 

« Последнее редактирование: 30.08.2024, 18:09:27 от kkmspb »
*

kkmspb

  • Новичок
  • 6
  • 0 / 0
Цитировать
Не понимаю как правильнее - сделать модуль (в админке) и плагин в систему.


Да похоже такой вариант работает нормально. То есть системный плагин загружается раньше чем модуль (естественно).


Но и событие из JoomShopping с данными заказа прилетает тоже раньше загрузки модуля.


Таким образом есть только вариант: в плагине сохранить данные заказа из прилетевшего события из JoomShopping и при загрузке модуля забрать эти данные из плагина и отрисовать свой дополнительный интерфейс с учетом этих данных (заказа).


Вот такой код в модуле работает:
Код
    $pluginEnable = PluginHelper::isEnabled('system' , 'paymentacceptance');


    if( $pluginEnable )
    {
        $myPlugin = Factory::getApplication()->bootPlugin('paymentacceptance','system');

        $order = $myPlugin->getOrder();

        $order_items = $myPlugin->getOrderItems();

    }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

addScript (в админке) к пути файла js добавляет /administrator/. Зачем?

Автор kkmspb

Ответов: 0
Просмотров: 430
Последний ответ 02.09.2024, 14:42:25
от kkmspb
Не работает плагин на хостинге

Автор a7951396

Ответов: 3
Просмотров: 1215
Последний ответ 29.11.2023, 17:56:49
от a7951396
Плагин joomirseopagination доработка

Автор Stasweb

Ответов: 15
Просмотров: 1862
Последний ответ 16.03.2023, 15:00:33
от Stasweb
Akeeba Admin Tools Core - не могу снять пароль

Автор AlexP750

Ответов: 1
Просмотров: 1747
Последний ответ 06.10.2022, 18:15:14
от Mitriy
Не могу установить языковой пакет для компонента Joomla Events Manager ((jem))

Автор Ded Magomed

Ответов: 0
Просмотров: 1449
Последний ответ 24.05.2022, 15:06:38
от Ded Magomed