是否可以通过JQuery加载Joomla模块?
在php中,我可以用
<?php echo JModuleHelper::renderModule($module);?>现在我想通过JQuery触发这个事件!背后的原因是,我必须动态加载模块。
发布于 2014-08-12 17:45:33
是的,您需要有一个服务器端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));
}
}然后在前端根目录中,将以下内容添加到显示方法中的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语法。此外,在保存到控制器文件夹时,请确保将此文件命名为mycomponent.raw.php。
https://stackoverflow.com/questions/25262318
复制相似问题