是否可以通过JQuery加载Joomla模块?
在php中我可以用
来做到这一点<?php echo JModuleHelper::renderModule($module);?>
现在我想通过JQuery触发此事件!背后的原因是,我必须动态加载模块。
答案 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。