вызвать плагин в компоненте Joomla - PullRequest
4 голосов
/ 22 апреля 2011

Как я могу назвать плагин Joomla 'Simple Picture Slideshow' в любом компоненте Joomla.Есть решение?

Спасибо

Ответы [ 4 ]

6 голосов
/ 08 декабря 2012

Лучший способ вызывать контент-плагины в Joomla! 1.5 и выше просто используйте:

$text = JHTML::_('content.prepare', $text);

http://docs.joomla.org/Triggering_content_plugins_in_your_extension

3 голосов
/ 22 апреля 2011

Вы можете вызвать любое событие плагина, которое определено в этом плагине.

$dispatcher = JDispatcher::getInstance();
$data = array($argu1, $argu2);   // any number of arguments you want
return $dispatcher->trigger($eventName, $data);
2 голосов
/ 22 апреля 2011

В Joomla плагины не называются в обычном смысле, они запускаются различными событиями. Плагин прослушивает конкретное событие, которое его запускает. В этом случае вам нужно будет посмотреть, что слушает даже Simple Picture Slideshow, а затем добавить этот триггер к вашему компоненту. Единственный способ гарантировать, что плагин будет запускаться постоянно, - это прослушивать одно из глобальных системных событий, это происходит независимо от кода в компоненте, на уровне платформы. Если плагин запускается неглобальным событием, вам необходимо либо изменить плагин, либо добавить событие в каждый компонент, который вы хотите использовать, используя плагин.

Глобальная ссылка на системное событие - http://docs.joomla.org/Reference:System_Events_for_Plugin_System

Ссылка на плагин - http://docs.joomla.org/Plugin

1 голос
/ 22 апреля 2015

Этот вопрос специально для Content плагина Joomla.

Вы можете вызвать любое событие плагина в вашем компоненте.

Вот пример для запуска события content plugin onPrepareContent.

$content = new stdClass;
$content->text = 'Your content body with proper tag or 
                    content wich you want to replace. 
                    For example:  {loadmodule mod_login}';
$atricle = array();

JPluginHelper::importPlugin('content');
$dispatcher = JDispatcher::getInstance();

JDispatcher::getInstance()->trigger(
    'onPrepareContent',
    array(
        &$content,
        &$atricle,
        null
    )
);

Или, если вы хотите запустить только определенный плагин для вашего компонента, вы можете использовать,

JPluginHelper::importPlugin('content', 'loadmodule');

Второй аргумент - это имя плагина, который вы хотите использовать.

Аналогично, вы можете вызвать пользовательский плагин в вашем компоненте.

JPluginHelper::importPlugin('user', 'contactcreator');

JDispatcher::getInstance()->trigger(
    'onUserAfterSave', 
    array(
        $user, 
        $isnew, 
        $success, 
        $msg
    )
);
...