Joomla jquery如何加载Joomla模块

时间:2014-08-12 10:45:01

标签: jquery joomla module

是否可以通过JQuery加载Joomla模块?

在php中我可以用

来做到这一点
<?php echo JModuleHelper::renderModule($module);?>

现在我想通过JQuery触发此事件!背后的原因是,我必须动态加载模块。

1 个答案:

答案 0 :(得分:1)

是的,您需要有一个服务器端AJAX请求处理程序来呈现内容。附在底部的文章面向javascript,但可以很容易地转换为处理原始html。首先,您需要一个控制器来处理请求。在组件中,前端控制器创建文件mycontroller.raw.php:

jimport( 'joomla.application.module.helper' );

class MyControllerControllerMyView extends JControllerLegacy
{
    public function renderModule()
    {
        $type = $this->input->get('module_type');
        $name = $this->input->get('module_name');
        $style = $this->input->get('module_style', 'xhtml');
        $module = JModuleHelper::getModule($type, $name);
        echo JModuleHelper::renderModule($module, array('style' => $style));  
    }
 }

然后在前端根目录中,将以下内容添加到display method中的controller.php文件中:

$this->registerTask('myview.renderModule', 'renderModule');

然后javascript来处理请求客户端:

(function($) {
    function processAjaxRequest() {
        $.ajax({
            type: 'POST',
            url: 'index.php?option=com_mycomponent&task=myview.renderModule&format=raw',
            dataType: 'html',
            data: {module_type: 'MyModuleType', module_name: 'MyModuleName', module_style: 'xhtml' },
            success: function(r) {
                $('#my-side-column').append(r);
            }
         });
     }
 })(jQuery);

这一切都假设你有一个正在开发的组件来定制,但实际情况是没有它就无法实现。

祝你好运!

*编辑*

我编辑了控制器类名,以反映从MyComponent到MyComponentControllerMyView的正确Joomla语法。此外,请务必在保存到controllers文件夹时将此文件命名为mycomponent.raw.php。