在joomla组件中调用插件

时间:2011-04-22 13:11:52

标签: plugins joomla components

如何在任何joomla组件中调用joomla“简单图片幻灯片”插件。有解决方案吗?

由于

4 个答案:

答案 0 :(得分:6)

在Joomla中调用内容插件的最佳方式! 1.5及以上只是用途:

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

http://docs.joomla.org/Triggering_content_plugins_in_your_extension

答案 1 :(得分:3)

您可以调用该插件中定义的任何插件事件。

$dispatcher = JDispatcher::getInstance();
$data = array($argu1, $argu2);   // any number of arguments you want
return $dispatcher->trigger($eventName, $data);

答案 2 :(得分:2)

在Joomla中,插件不是典型意义上的调用,它们是由各种事件触发的。该插件侦听触发它的特定事件。在这种情况下,您需要查看甚至简单图片幻灯片监听的内容,然后将该触发器添加到您的组件。保证插件始终被触发的唯一方法是让它监听一个全局系统事件,这些事件发生在组件中的代码中,它们发生在框架级别。如果插件是由非全局事件触发的,那么您需要更改插件或将事件添加到使用插件所需的每个组件。

全球系统事件参考 - http://docs.joomla.org/Reference:System_Events_for_Plugin_System

插件参考 - http://docs.joomla.org/Plugin

答案 3 :(得分:1)

此问题专门针对joomla的Content插件。

您可以触发组件中的任何插件事件。

以下是触发content插件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
    )
);